8-AUG-1997 20:47:50 DEC Fortran V6.3-711 Page 1 8-AUG-1997 20:47:04 DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.FOR;2 1 2 C ***** Program to Convert a discrete time ***** 3 C ***** sampled data file into a frequency ***** 4 C ***** spectrum file. 5 6 C ***** The input file is assumed to be ***** 7 C ***** 1024 evenly time sampled points. ***** 8 C ***** This is fixed point data that is ***** 9 C ***** 2 bytes per sample. The program ***** 10 C ***** also asks for the time between ***** 11 C ***** samples in seconds. ***** 12 13 C ***** The output file is 512 records ***** 14 C ***** long. It is frequency amplitude ***** 15 C ***** pairs. This is floating point ***** 16 C ***** data and the amplitudes have been ***** 17 C ***** normalized to 1.0 The upper 512 ***** 18 C ***** points of the transform, the ***** 19 C ***** aliased points are not written to ***** 20 C ***** the output file. 21 22 C ***** 2-AUG-1997 MSU PHYSICS ***** 23 24 25 PROGRAM CONVERT_1 26 27 C ***************************************** 28 C DEFINE ALL VARIABLES AND ARRAYS 29 C ***************************************** 30 31 32 IMPLICIT NONE 33 34 REAL*8 CDB(1:2048) 35 INTEGER*2 ICDB(1:1024) 36 COMMON ICDB, CDB 37 38 INTEGER*2 Index, IOSTATUS 39 40 REAL*8 Temp 41 42 CHARACTER FileName*32 43 44 45 C *********************************************************** 46 C Get the name of the fixed point input raw data file. 47 C *********************************************************** 48 WRITE ( 6, 30 ) 49 30 FORMAT ( ////////////////////////// 50 & ' ****************************************** '/ 51 & ' * * '/ 52 & ' * This is the Convert_1 Program * '/ 53 & ' * * '/ 54 & ' * Revision 1 AUGUST 1997 * '/ 55 & ' ****************************************** '// ) 56 57 40 WRITE ( 6, 50 ) CONVERT_1 8-AUG-1997 20:47:50 DEC Fortran V6.3-711 Page 2 8-AUG-1997 20:47:04 DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.FOR;2 58 50 FORMAT ( // 59 & ' To quit this program enter just a Carriage Return ', // 60 & ' or else, to Convert a discrete time sampled raw ', / 61 & ' data file to frequency space enter the filename ', / 62 & ' of the raw data file ', / 63 & ' DEVC:[DIR]NAME.EXT;VER: ', $ ) 64 65 READ ( 5, 55 ) FileName 66 55 FORMAT ( A ) 67 68 IF ( FileName .EQ. ' ' ) THEN 69 GOTO 998 70 END IF 71 72 WRITE ( 6, 60 ) FileName 73 60 FORMAT ( // 74 & ' The raw data file Filename ' / 75 & ' specification is: ', A 76 & // ) 77 78 79 80 C ************************** 81 C Open the raw data file 82 C ************************** 83 84 OPEN ( UNIT=10, FILE=FileName, STATUS='OLD', 85 & FORM='FORMATTED', READONLY, ACCESS='SEQUENTIAL', 86 & ERR=950, IOSTAT=IOSTATUS ) 87 88 89 C 90 C ***** Read the raw data file ***** 91 C 92 93 WRITE ( 6, 215 ) 94 215 FORMAT ( // 95 & ' ***** Now reading the raw data file. ***** ' 96 & // ) 97 98 DO Index=1,1024,1 99 READ ( 10, 220, ERR=970, IOSTAT=IOSTATUS ) ICDB(Index) 100 END DO 101 102 220 FORMAT ( I9 ) 103 104 CLOSE ( UNIT=10 ) 105 106 107 C ***** Findout if there should be an output file ***** 108 C ***** and get its FileName ***** 109 110 WRITE ( 6, 250 ) 111 250 FORMAT ( // ' To build an ASCII file of frequency ' / 112 & ' amplitude pairs, ' / 113 & ' Enter the FileName of the Output File ' / 114 & ' or else ' / CONVERT_1 8-AUG-1997 20:47:50 DEC Fortran V6.3-711 Page 3 8-AUG-1997 20:47:04 DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.FOR;2 115 & ' to Quit enter just a carriage return. ' // ) 116 117 WRITE ( 6, 251 ) 118 251 FORMAT ( ' Enter carriage return or ' / 119 $ ' DEVC:[DIR]NAME.EXT;VER: ',$ ) 120 121 READ ( 5, 255 ) FileName 122 255 FORMAT ( A ) 123 124 IF ( FileName .EQ. ' ' ) THEN 125 126 WRITE ( 6, 257 ) 127 257 FORMAT (// ' NO ASCII Output File Will Be Written. ' // ) 128 WRITE ( 6, 80 ) 129 GOTO 40 130 END IF 131 132 80 FORMAT ( / ' ***************************************** '/ 133 & ' * * '/ 134 & ' * RESTARTING THE RIGAKU DATA FILE * '/ 135 & ' * READER PROGRAM. * '/ 136 & ' * * '/ 137 & ' ***************************************** '// ) 138 139 140 WRITE ( 6, 270 ) FileName 141 270 FORMAT (// ' The specification of the output file is: ', A //) 142 143 OPEN ( UNIT=15, FILE=FileName, STATUS='NEW', 144 & FORM='FORMATTED', CARRIAGECONTROL='LIST', 145 & ACCESS='SEQUENTIAL', ERR=960, IOSTAT=IOSTATUS ) 146 147 148 149 C ***** Now call the routine to transform the discrete ***** 150 C ***** time sampled data into frequency space. ***** 151 152 CALL Forward_Fourier 153 154 155 C ***** Now write the ASCII Frequency Amplitude ***** 156 C ***** Pair Output File ***** 157 C ***** for a 2MHz ADC Clock use 51.15 158 C ***** for a 6MHz ADC Clock use 17.05 159 160 DO Index=1,1024,2 161 Temp = ( FLOAT( (Index-1) / 2 ) ) / 17.05 162 WRITE ( 15, 300 ) Temp,CDB(Index) 163 END DO 164 165 300 FORMAT ( ' ', F7.3, ' ', F8.6 ) 166 167 CLOSE ( UNIT = 15 ) 168 169 WRITE ( 6, 280 ) 170 280 FORMAT ( ' The ASCII output file ', 171 & 'has been successfully written. ', // ) CONVERT_1 8-AUG-1997 20:47:50 DEC Fortran V6.3-711 Page 4 8-AUG-1997 20:47:04 DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.FOR;2 172 173 WRITE ( 6, 80 ) 174 GOTO 40 175 176 C ******************************************************************* 177 178 179 C ************************************************************ 180 C THIS IS THE SECTION FOR HANDLING IO ERRORS AND ALL EXITS 181 C ***********************************---------*********-----** 182 183 950 WRITE ( 6, 951 ) IOSTATUS 184 951 FORMAT ( //, ' THERE HAS BEEN AN IO SYSTEM ERROR TRYING ', / 185 & ' TO OPEN THE SPECIFIED RAW DATA FILE. ', // 186 & ' DID YOU TYPE THE FILENAME CORRECTLY? ', // 187 & ' FORTRAN OPEN IOSTAT = ', I3, / ) 188 WRITE ( 6, 80 ) 189 GOTO 40 190 191 192 960 WRITE ( 6, 961 ) IOSTATUS 193 961 FORMAT ( //, ' THERE HAS BEEN AN IO SYSTEM ERROR TRYING ', / 194 & ' TO OPEN THE SPECIFIED ASCII OUTPUT FILE. ', // 195 & ' DID YOU TYPE THE FILENAME CORRECTLY? ', // 196 & ' FORTRAN OPEN IOSTAT = ', I3, / ) 197 WRITE ( 6, 80 ) 198 GOTO 40 199 200 201 970 WRITE ( 6, 971 ) IOSTATUS 202 971 FORMAT ( //, ' THERE HAS BEEN AN IO SYSTEM ERROR TRYING ', / 203 & ' TO READ THE RAW DATA FILE. ', / 204 & ' DID YOU TYPE THE FILENAME CORRECTLY? ', // 205 & ' FORTRAN READ IOSTAT = ', I3, / ) 206 WRITE ( 6, 80 ) 207 GOTO 40 208 209 998 WRITE ( 6, 999 ) 210 999 FORMAT ( // ' Convert_1 Program Is Exiting. ', // ) 211 212 STOP ' ' 213 214 END CONVERT_1 8-AUG-1997 20:47:50 DEC Fortran V6.3-711 Page 5 Symbol Table 8-AUG-1997 20:47:04 DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.FOR;2 PROGRAM SECTIONS Name Bytes Attributes 1 $BSS$ 56 NOPIC CON REL LCL NOSHR NOEXE RD WRT NOSEC OCTA 2 $IODATA$ 2616 NOPIC CON REL LCL NOSHR NOEXE RD WRT NOSEC OCTA 3 $CODE$ 2112 PIC CON REL LCL SHR EXE NORD NOWRT NOSEC OCTA 4 $LINK$ 416 NOPIC CON REL LCL NOSHR NOEXE RD NOWRT NOSEC OCTA 5 LIB$INITIALIZE 4 NOPIC CON REL GBL NOSHR NOEXE RD NOWRT NOSEC LONG 6 $BLANK 18432 NOPIC OVR REL GBL NOSHR NOEXE RD WRT NOSEC OCTA Total Space Allocated 23636 ENTRY POINTS Address Type Name 3-00000000 CONVERT_1 VARIABLES Address Type Name Address Type Name 1-00000018 CHAR FILENAME 1-00000008 I*2 IOSTATUS 1-00000000 I*2 INDEX 1-00000010 R*8 TEMP ARRAYS Address Type Name Bytes Dimensions 6-00000800 R*8 CDB 16384 (2048) 6-00000000 I*2 ICDB 2048 (1024) LABELS Address Label Address Label Address Label Address Label Address Label Address Label ** 30 ** 60 ** 250 ** 270 ** 951 ** 971 3-00000068 40 ** 80 ** 251 ** 280 3-000005D0 960 3-000007F8 998 ** 50 ** 215 ** 255 ** 300 ** 961 ** 999 ** 55 ** 220 ** 257 3-000001C4 950 3-00000348 970 CONVERT_1 8-AUG-1997 20:47:50 DEC Fortran V6.3-711 Page 6 Symbol Table 8-AUG-1997 20:47:04 DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.FOR;2 FUNCTIONS AND SUBROUTINES REFERENCED Type Name FORWARD_FOURIER CONVERT_1 8-AUG-1997 20:47:50 DEC Fortran V6.3-711 Page 7 Symbol Table 8-AUG-1997 20:47:04 DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.FOR;2 215 +---------------------------------------------------+ | KEY TO ADDRESS CODE FORMATS | | ppp-oooooooo - In Psect ppp, Offset oooooooo | | ***-******** - External | | # - Suffix: Also In Registers | | REG-rrrrrrrr - In Register rrrrrrrr | | REG-######## - In Various Registers | | ** - Not Used; Not Allocated | +---------------------------------------------------+ COMMAND QUALIFIERS /ALIGNMENT=(COMMONS=(PACKED,NOMULTILANGUAGE),RECORDS=NATURAL) /ASSUME=(ACCURACY_SENSITIVE,BACKSLASH,NODUMMY_ALIASES,NOUNDERSCORE,NOSOURCE_INCLUDE) /CHECK=(ASSERTIONS,BOUNDS,FORMAT,FP_EXCEPTIONS,OUTPUT_CONVERSION,OVERFLOW,UNDERFLOW) /DEBUG=(PARAMETERS=NONE,SYMBOLS,TRACEBACK) /DESIGN=(NOCOMMENTS) /SHOW=(NODICTIONARY,NOINCLUDE,MAP,NOPREPROCESSOR,SINGLE) /STANDARD=(NOMIA,NOSEMANTIC,NOSOURCE_FORM,NOSYNTAX) /WARNINGS=(ALIGNMENTS,NOARGUMENT_CHECKING,NODECLARATIONS,GENERAL,INFORMATIONAL,NOTRUNCATED_SOURCE, UNCALLED,UNINITIALIZED,UNREACHABLE,NOUNUSED,USAGE) /NOAUTOMATIC /BLAS=NOMAPPED /CONVERT=NATIVE /NOCROSS_REFERENCE /NOD_LINES /DOUBLE_SIZE=64 /ERROR_LIMIT=30 /NOEXTEND_SOURCE /F77 /FLOAT=G_FLOAT /GRANULARITY=QUADWORD /IEEE_MODE=FAST /INSTRUCTION_SET=FLOATING_POINT /INTEGER_SIZE=32 /NOMACHINE_CODE /MATH_LIBRARY=ACCURATE /NAMES=UPPERCASE /OPTIMIZE=(INLINE=NONE,LEVEL=0,SPECULATE=NONE,TUNE=GENERIC,UNROLL=0) /NOPAD_SOURCE /REAL_SIZE=32 /NORECURSIVE /ROUNDING_MODE=NEAREST /NOSEPARATE_COMPILATION /NOSYNCHRONOUS_EXCEPTIONS /NOSYNTAX_ONLY /TERMINAL=NOSTATISTICS /NOTIE /VMS /NOANALYSIS_DATA /NODIAGNOSTICS /INCLUDE=(.FOR,.f,FORT$INCLUDE:.FOR,FORT$INCLUDE:.f) /LIST=DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.LIS;1 /OBJECT=DEPT1:[EDMUNDS.SPARE_6]CONVERT_1.OBJ;1 /NOLIBRARY sys$lib=SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1 COMPILER: DEC Fortran V6.3-711-293V COMPILATION STATISTICS CPU time: 0.25 seconds Elapsed time: 2.33 seconds Pagefaults: 142 I/O Count: 14