PRO FXBHMAKE,HEADER,NROWS,EXTNAME,COMMENT,DATE=DATE, $ INITIALIZE=INITIALIZE,EXTVER=EXTVER,EXTLEVEL=EXTLEVEL, $ ERRMSG=ERRMSG ; ON_ERROR,2 ; ; Check the number of parameters first. ; IF N_PARAMS() LT 2 THEN BEGIN MESSAGE = 'Calling sequence: FXBHMAKE, HEADER, NROWS ' + $ '[, EXTNAME [, COMMENT ]]' IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN ERRMSG = MESSAGE RETURN END ELSE MESSAGE, MESSAGE ENDIF ; ; If requested, then initialize the header. ; IF KEYWORD_SET(INITIALIZE) THEN BEGIN HEADER = STRARR(36) HEADER[0] = 'END' + STRING(REPLICATE(32B,77)) ; ; Else, if undefined, then initialize the header. ; END ELSE IF N_ELEMENTS(HEADER) EQ 0 THEN BEGIN HEADER = STRARR(36) HEADER[0] = 'END' + STRING(REPLICATE(32B,77)) ; ; Otherwise, make sure that HEADER is a string array, and remove any keywords ; that describe the format of the file. ; END ELSE BEGIN SZ = SIZE(HEADER) IF (SZ[0] NE 1) OR (SZ[2] NE 7) THEN BEGIN MESSAGE = 'HEADER must be a (one-dimensional) ' + $ 'string array' IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN ERRMSG = MESSAGE RETURN END ELSE MESSAGE, MESSAGE ENDIF IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN FXHCLEAN,HEADER,ERRMSG=ERRMSG IF ERRMSG EQ '' THEN RETURN END ELSE FXHCLEAN,HEADER ENDELSE ; ; Add the required keywords. Start out with a completely blank table, with no ; columns. ; FXADDPAR,HEADER,'XTENSION','BINTABLE','Written by IDL: '+ SYSTIME() FXADDPAR,HEADER,'BITPIX',8 FXADDPAR,HEADER,'NAXIS',2,'Binary table' FXADDPAR,HEADER,'NAXIS1',0,'Number of bytes per row' FXADDPAR,HEADER,'NAXIS2',LONG(NROWS),'Number of rows' FXADDPAR,HEADER,'PCOUNT',0,'Random parameter count' FXADDPAR,HEADER,'GCOUNT',1,'Group count' FXADDPAR,HEADER,'TFIELDS',0,'Number of columns' ; ; If requested, add the EXTNAME keyword to the header. ; IF N_PARAMS() GE 3 THEN BEGIN IF N_PARAMS() EQ 3 THEN COMMENT = 'Extension name' FXADDPAR,HEADER,'EXTNAME',EXTNAME,COMMENT ENDIF ; ; If requested, add the EXTVER keyword to the header. ; IF N_ELEMENTS(EXTVER) EQ 1 THEN $ FXADDPAR,HEADER,'EXTVER',LONG(EXTVER),'Extension version' ; ; If requested, add the EXTLEVEL keyword to the header. ; IF N_ELEMENTS(EXTLEVEL) EQ 1 THEN $ FXADDPAR,HEADER,'EXTLEVEL',LONG(EXTLEVEL),'Extension level' ; ; If requested, add the DATE keyword to the header, containing the current ; date. ; IF KEYWORD_SET(DATE) THEN BEGIN GET_DATE,DTE ;Get current date as CCYY-MM-DD FXADDPAR,HEADER,'DATE',DTE,'Creation date' ENDIF ; IF N_ELEMENTS(ERRMSG) NE 0 THEN ERRMSG = '' RETURN END