📄 sxwrite.pro
字号:
pro SXWRITE, Unit, Data, Par;+; NAME:; SXWRITE; PURPOSE:; Write a group of data and parameters in ST format; to a STSDAS data file.;; CALLING SEQUENCE:; SXWRITE, Unit, Data,[ Par];; INPUTS:; Unit = unit number of file. The file must have been; previously opened by SXOPEN.; Data = Array of data to be written. The dimensions; must agree with those supplied to SXOPEN and written; into the FITS header. The type is converted if; necessary.;; OPTIONAL INPUT PARAMETERS:; Par = parameter block. The size of this array must; agree with the Psize parameter in the FITS header.;; OUTPUTS:; None.; COMMON BLOCKS:; STCOMMN - Contains RESULT(20,10) where RESULT(i,LUN) =; 0 - 121147 for consistency check, 1 - Unit for consistency,; 2 - bitpix, 3 - naxis, 4 - groups (0 or 1), 5 - pcount,; 6 - gcount, 7 - psize, 8 - data type as idl type code,; 9 - bytes / record, 10 to 10+N-1 - dimension N,; 18 - # of groups written, 19 = gcount.;; SIDE EFFECTS:; The data are written into the next group.;; RESTRICTIONS:; SXOPEN must have been called to initialize the; header and the common block.;; MODIFICATION HISTORY:; DMS, July, 1983.; D.Lindler July, 1986 - changed block size of file to 512; moved group parameters after the groups data.; D.Lindler July, 1987 - modified to allow any size parameter block; (in bytes).; D. Lindler April, 1990 - converted to new VMS IDL; Converted to IDL V5.0 W. Landsman September 1997;-;----------------------------------------------------------------------------; common stcommn, result, filename if N_params() LT 2 then begin print,'Syntax - SXWRITE, Unit, Data,[ Par] return endif ; if N_elements(result) ne 200 then begin print,'SXWRITE - Sxopen not called' return endif if result[1,unit] ne unit then begin print,'SXWRITE - unit not opened with SXOPEN' return endif; on_error,2 ;return to caller on error s = size(data) ;get data dims;; determine position in file to write; start=result[18,unit]*result[9,unit];; create assoc variable for data; rec = assoc(unit,data,start);; write data; rec[0]=data;; write pblk; if result[7,unit] gt 0 then begin if n_params(0) lt 3 then par=bytarr(result[7,unit]) p=byte(par,0,result[7,unit]) rec=assoc(unit,p,start+result[9,unit]-result[7,unit]) rec[0]=p end result[18,unit] = result[18,unit]+1 ;did one more group returnend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -