\subsection{NXdata} NXdata is a module for writing Powder Diffraction Data files. The routines here are somewhat obsolete as they refer to NeXus writing using the standard Napi routines which is quite involved. Usually, NeXus files are written from SICS through the NXDICT aware utility routines in NXUTIL. If not stated otherwise, all routines return 1 on successful completion and 0 when an error is detected. Please note, that many of these routines expect to find certain data items in the Sics Interpreter. This implies, that any naming changes in the initialisation file might force changes in here as well. \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap1} $\langle$Protos {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@ char *SNXMakeFileName(SicsInterp *pSics, SConnection *pCon);@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro defined by scraps ?, ?, ?, ?, ?, ?, ?. \item Macro referenced in scrap ?. \end{list} \end{minipage}\\[4ex] \end{flushleft} SNXMakeFileName creates a new filename from the SICS variables SicsDataPath, SicsDataPresript, SicsDataNumber and SicsDataEnding. SicsDataNumber will be incremented as well. The function returns a newly allocate buffer with the assembled filename or NULL on error. Note, that the caller is responsible for freeing the memory associated with the filename afterwards. \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap2} $\langle$Protos {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@ NXhandle SNXStartFile(SConnection *pCon, SicsInterp *pSics); @\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro defined by scraps ?, ?, ?, ?, ?, ?, ?. \item Macro referenced in scrap ?. \end{list} \end{minipage}\\[4ex] \end{flushleft} First calls SNXMakeFileName in order to get a new Filename. Then a new Nexus file is created and all the standard headings are filled in: Filename, User, instrument, date etc. This routine also installs an error handler which prints errors to pCon. If successful, the SicsDataNumber is incremented and an NXhandle into the new file is returned. If there is a problem, NULL will be returned. The file returned will be positioned at root level. \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap3} $\langle$Protos {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@ int SNXStartEntry(NXhandle Nfil, int iNew, SicsInterp *pSics);@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro defined by scraps ?, ?, ?, ?, ?, ?, ?. \item Macro referenced in scrap ?. \end{list} \end{minipage}\\[4ex] \end{flushleft} \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap4} $\langle$Protos {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@ void SNXFormatTime(char *pBuffer, int iBufLen);@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro defined by scraps ?, ?, ?, ?, ?, ?, ?. \item Macro referenced in scrap ?. \end{list} \end{minipage}\\[4ex] \end{flushleft} SNXFormatTime formats the current system time in a form compatible to the NeXus standard. Input parameters is a Buffer to hold the string and a length of the buffer. Maximum iBufLen characters will be copied to that buffer. SNXStartEntry creates a new entry corresponding to iNew in the Nexus file Nfil. SNXStartEntry will position Nfil in this new entry. Any data items labeled as Comment or intent will be written to the file as well. \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap5} $\langle$Protos {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@ int SNFinishFile(NXhandle Nfil);@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro defined by scraps ?, ?, ?, ?, ?, ?, ?. \item Macro referenced in scrap ?. \end{list} \end{minipage}\\[4ex] \end{flushleft} SNFinishFile will end a Nexus file properly. \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap6} $\langle$Protos {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@ int SNMakeDMC(SConnection *pCon, SicsInterp *pSics);@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro defined by scraps ?, ?, ?, ?, ?, ?, ?. \item Macro referenced in scrap ?. \end{list} \end{minipage}\\[4ex] \end{flushleft} SNMakeDMC produces a Nexus DMC data file from the currently valid information. It orchestrates all of the above. \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap7} $\langle$Protos {\footnotesize ?}$\rangle\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@int SNStoreDMC(SConnection *pCon, SicsInterp *pSics, void *pData, int argc,@\\ \mbox{}\verb@ char *argv[]);@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-1ex} \footnotesize\addtolength{\baselineskip}{-1ex} \begin{list}{}{\setlength{\itemsep}{-\parsep}\setlength{\itemindent}{-\leftmargin}} \item Macro defined by scraps ?, ?, ?, ?, ?, ?, ?. \item Macro referenced in scrap ?. \end{list} \end{minipage}\\[4ex] \end{flushleft} SNStoreData is the wrapper function used to install a DMC data storage command in the Sics interpreter. \begin{flushleft} \small \begin{minipage}{\linewidth} \label{scrap8} \verb@"nxdata.h"@ {\footnotesize ? }$\equiv$ \vspace{-1ex} \begin{list}{}{} \item \mbox{}\verb@@\\ \mbox{}\verb@/*-------------------------------------------------------------------------@\\ \mbox{}\verb@ N X D A T A@\\ \mbox{}\verb@@\\ \mbox{}\verb@ Some routines for handling Nexus data file writing.@\\ \mbox{}\verb@@\\ \mbox{}\verb@ Mark Koennecke, April 1997@\\ \mbox{}\verb@ @\\ \mbox{}\verb@ copyright: see implementation file.@\\ \mbox{}\verb@--------------------------------------------------------------------------*/@\\ \mbox{}\verb@#ifndef SICSNXDATA@\\ \mbox{}\verb@#define SICSNXDATA@\\ \mbox{}\verb@@$\langle$Protos {\footnotesize ?, \ldots\ }$\rangle$\verb@ @\\ \mbox{}\verb@#endif @\\ \mbox{}\verb@@\\ \mbox{}\verb@@$\diamond$ \end{list} \vspace{-2ex} \end{minipage}\\[4ex] \end{flushleft}