The covariance matrix is written to a binary, direct access file with a fixed record length of 8 bytes. The file will have the name input.xsm . The file is opened with the following statements:
C ***** OPEN XSM FILE...Note that the logical unit 16 must C be assigned a filename external to the program, C in Unix: setenv FOR016 input.xsm LUN=16 call getenv('FOR016',XSMFILE) OPEN ( UNIT = LUN -, FILE = XSMFILE -, STATUS = 'UNKNOWN' -, FORM = 'UNFORMATTED' -, ACCESS = 'DIRECT' -, RECL = 8 )
Note: This OPEN statement is used for machines where the fixed record length for unformatted files is given in bytes (e.g. Alliant FX-40). Some machines (e.g. DEC 5000 workstations) require the record lenth in words; in that case specify RECL = 2 .
The first 10 records of the xsm file contains the header, identifying the file in terms of title, number of sensors and frequency sampling. The header has been written with the following statements, with the parameters defined in Table 9:
C *** WRITE HEADER WRITE (LUN,REC=1) TITLE(1:8) WRITE (LUN,REC=2) TITLE(9:16) WRITE (LUN,REC=3) TITLE(17:24) WRITE (LUN,REC=4) TITLE(25:32) WRITE (LUN,REC=5) NRCV, NFREQ c >>> Dummy integers IZERO WRITE (LUN,REC=6) IZERO, IZERO WRITE (LUN,REC=7) FREQ1, FREQ2 c >>> DELFRQ is the frequency increment (FREQ2 - FREQ1)/(NFREQ-1) WRITE (LUN,REC=8) DELFRQ, ZERO c >>> The surface and white noise levels for info WRITE (LUN,REC=9) SSLEV,WNLEV c >>> BLANK FILL NEXT RECORD FOR FUTURE USE WRITE (LUN,REC=10) ZERO,ZERO
OASN writes the covariance matrix columnwise using the following loop structure
: COMPLEX COVMAT(NRCV,NRCV,NFREQ) : : C >>> WRITE XSM DO 20 IFREQ=1,NFREQ DO 20 JRCV=1,NRCV DO 20 IRCV=1,NRCV IREC = 10 + IRCV + (JRCV-1)*NRCV + (IFREQ-1)*NRCV*NRCV WRITE (LUN,REC=IREC) COVMAT(IRCV,JRCV,IFREQ) 20 CONTINUE