Title :NTRAN VERSION 1.1 Keywords :XEDS, EELS Computer :DEC VAX 11/730-785, DEC PDP 11/2-11/73 Operating System :VAXVMS, RT-11 Programming Language :Fortran IV Hardware Requirements :None Author(s) :Nestor J. Zaluzec Correspondence Address :Argonne Nat. Lab, Electron Microscopy Center,Bldg 212 :Materials Science Division, Argonne, Illinois 60439, Abstract: NTRANS is a computer program which translates manufacturers XEDS and EELS spectral data into the EMMPDL data format. It utilies the RWEMMPDL subroutines contained in the EMMPDL. At present this version translates both EDAX and TRACOR-Northern and Link Systems data files. Examples of translated spectra can be found spectra can be found in the XEDS and EELS subdirectories of the EMMPDL. ------------------------------------------------------------------------------- Title :NTRAN VERSION 1.1 Keywords :XEDS, EELS Computer :DEC VAX 11/730-785, DEC PDP 11/2-11/73 Operating System :VAXVMS, RT-11 Programming Language :Fortran IV Hardware Requirements :None Author(s) :Nestor J. Zaluzec Correspondence Address :Argonne Nat. Lab, Electron Microscopy Center,Bldg 212 :Materials Science Division, Argonne, Illinois 60439, Abstract: NTRANS is a computer program which translates manufacturers XEDS and EELS spectral data into the EMMPDL data format. It utilies the RWEMMPDL subroutines contained in the EMMPDL. At present this version translates both EDAX and TRACOR-Northern data files. Examples of translated spectra can be found spectra can be found in the XEDS and EELS subdirectories of the EMMPDL. Ntrans contains all source code needed to run. Compilation Procedure DEC RT-11 & VAX VMS FORTRAN/EXTEND NTRANS.FOR LINK NTRANS.FOR RUN NTRANS.FOR Example of I/O RUN NTRANS ****************************** * NTRANS * * Beta Test * * XEDS/EELS FILE TRANSLATION * * PROGRAM * *EMMPDL File Format Ver. 1.1 * * 8903130003-NJZ * ****************************** Select Input File Format: [EMmpdl,EDax,KEvex,LInk,TRacor]:==> EDAX Enter the Input File Name: 9900.EDS Enter the Output File Name: TEST.PDL Enter Spectral Type [XEDS,EELS]: XEDS Summary of NTRANS Responses File Format =ED File Type =XE Input File =9900.EDS Output File =TEST.PDL Is this Correct [Y]:Y Enter EDAX System Type [9100 or 9900]: 9900 EMMPDL Data File Being Created 0-JUN-89 at 10:10:51 Output Data File Name = TEST.PDL Input Spectrum Identification ---------------------- Enter Comment line [65 characters=Max] Title : A TEST OF NTRANS This spectral file contains 2000 data channels Enter Number of Columns/Line [1-10; Default=5]: 1 Translate Another Spectrum [N]:N FORTRAN STOP ------------------------------------------------------------------------------- #Title :NI OXIDE NI LSHELL O KSHELL #Version : 1.1 #NPTS- : 1024.0 #NCOL- : 5.0 #OFFS-EV : -184.057 #EVCH- : 1.261 #VOLT-KV : 100.0 #ALPH-MR : 2.00 #BETA-MR : 5.70 #LTIM-MS : 500.0 #DTIM-MS : 0.0 #BCUR-NA : 0.00 #BDIA-NM : 0.00 #THCK-NM : 0.0 #SPECTRUM: 85.0, 93.0, 51.0, 75.0, 60.0, 79.0, 62.0, 64.0, 141.0, 66.0, 64.0, 76.0, 54.0, 99.0, 58.0, 63.0, 98.0, 69.0, 62.0, 84.0, 132.0, 83.0, 61.0, 75.0, 68.0, 75.0, 61.0, 49.0, 76.0, 76.0, 73.0, 68.0, 66.0, 78.0, 58.0, 78.0, 81.0, 66.0, 67.0, 78.0, 82.0, 72.0, 94.0, 64.0, 93.0, 84.0, 77.0, 94.0, 95.0, 78.0, 61.0, 70.0, 78.0, 91.0, 69.0, 76.0, 95.0, 63.0, 79.0, 96.0, 73.0, 82.0, 63.0, 68.0, 101.0, 84.0, 75.0, 68.0, 82.0, 95.0, 82.0, 95.0, 67.0, 94.0, 68.0, 67.0, 83.0, 66.0, 61.0, 89.0, 96.0, 114.0, 82.0, 88.0, 79.0, 79.0, 112.0, 100.0, 98.0, 111.0, 89.0, 86.0, 94.0, 107.0, 82.0, 104.0, 103.0, 111.0, 88.0, 90.0, 90.0, 96.0, 81.0, 96.0, 122.0, 128.0, 90.0, 115.0, 113.0, 147.0, 119.0, 134.0, 135.0, 151.0, 161.0, 155.0, 161.0, 197.0, 197.0, 243.0, 279.0, 267.0, 330.0, 371.0, 415.0, 578.0, 615.0, 719.0, 958.0, 1202.0, 1532.0, 2034.0, 2658.0, 3250.0, 4374.0, 5908.0, 7733.0, 10446.0, 13964.0, 19649.0, 27850.0, 40443.0, 70906.0, 287377.0, 907273.0, 999999.0, 999999.0, 378770.0, 66816.0, 22640.0, 19922.0, 18842.0, 18193.0, 17625.0, 17627.0, 18512.0, 20334.0, 22886.0, 24198.0, 27896.0, 32936.0, 38326.0, 42489.0, 45744.0, 45637.0, 45694.0, 42882.0, 39301.0, 35152.0, 31583.0, 29351.0, 28482.0, 28329.0, 28231.0, 27694.0, 27198.0, 27029.0, 25240.0, 23441.0, 21900.0, 21761.0, 20889.0, 19835.0, 19086.0, 18714.0, 18160.0, 17165.0, 15978.0, 15562.0, 14447.0, 13456.0, 12783.0, 12715.0, 12453.0, 11348.0, 11020.0, 10826.0, 10562.0, 10939.0, 11753.0, 12310.0, 11939.0, 12096.0, 11224.0, 10748.0, 10746.0, 10011.0, 9657.0, 9138.0, 8772.0, 7979.0, 7886.0, 7974.0, 7469.0, 7350.0, 6893.0, 6750.0, 6689.0, 6406.0, 6630.0, 6251.0, 6156.0, 5988.0, 5570.0, 5426.0, 5285.0, 5220.0, 4784.0, 4774.0, 4711.0, 4548.0, 4602.0, 4369.0, 4196.0, 4170.0, 4039.0, 3939.0, 3861.0, 3809.0, 3644.0, 3583.0, 3468.0, 3446.0, 3326.0, 3296.0, 3245.0, 2997.0, 3223.0, 2869.0, 3161.0, 2924.0, 2977.0, 2852.0, 2748.0, 2856.0, 2681.0, 2573.0, 2367.0, 2314.0, 2378.0, 2200.0, 2131.0, 2149.0, 2140.0, 1977.0, 1892.0, 2087.0, 2029.0, 2534.0, 1768.0, 1661.0, 1866.0, 1781.0, 1756.0, 1720.0, 1675.0, 1608.0, 1617.0, 1508.0, 1466.0, 1435.0, 1472.0, 1510.0, 1398.0, 1368.0, 1329.0, 1337.0, 1252.0, 1453.0, 1239.0, 1300.0, 1183.0, 1143.0, 1201.0, 1099.0, 1156.0, 1118.0, 1022.0, 1108.0, 982.0, 1125.0, 1025.0, 982.0, 944.0, 1050.0, 975.0, 928.0, 838.0, 823.0, 760.0, 765.0, 886.0, 813.0, 747.0, 763.0, 766.0, 748.0, 730.0, 757.0, 722.0, 649.0, 615.0, 738.0, 715.0, 693.0, 622.0, 680.0, 737.0, 584.0, 641.0, 564.0, 655.0, 689.0, 604.0, 592.0, 528.0, 607.0, 604.0, 522.0, 603.0, 478.0, 595.0, 490.0, 567.0, 545.0, 415.0, 482.0, 465.0, 426.0, 425.0, 431.0, 457.0, 421.0, 452.0, 404.0, 426.0, 417.0, 402.0, 453.0, 351.0, 402.0, 390.0, 414.0, 336.0, 387.0, 393.0, 393.0, 362.0, 342.0, 320.0, 408.0, 344.0, 338.0, 376.0, 369.0, 325.0, 324.0, 388.0, 334.0, 286.0, 368.0, 313.0, 294.0, 276.0, 287.0, 278.0, 309.0, 298.0, 376.0, 276.0, 272.0, 285.0, 289.0, 303.0, 285.0, 262.0, 246.0, 241.0, 282.0, 276.0, 233.0, 293.0, 282.0, 240.0, 239.0, 249.0, 221.0, 281.0, 256.0, 271.0, 149.0, 233.0, 222.0, 257.0, 216.0, 267.0, 218.0, 223.0, 247.0, 257.0, 232.0, 247.0, 219.0, 218.0, 212.0, 155.0, 140.0, 210.0, 223.0, 241.0, 189.0, 202.0, 245.0, 221.0, 165.0, 251.0, 175.0, 216.0, 194.0, 149.0, 171.0, 190.0, 164.0, 186.0, 216.0, 196.0, 185.0, 224.0, 150.0, 187.0, 206.0, 189.0, 133.0, 487.0, 571.0, 646.0, 693.0, 687.0, 1008.0, 1647.0, 2813.0, 6044.0, 40099.0, 277728.0, 277409.0, 272166.0, 270886.0, 266481.0, 263601.0, 261307.0, 259766.0, 256997.0, 255017.0, 252812.0, 251045.0, 248411.0, 244405.0, 242740.0, 238405.0, 237245.0, 234104.0, 232296.0, 229025.0, 225395.0, 224023.0, 221182.0, 218490.0, 215402.0, 213702.0, 211487.0, 207637.0, 207735.0, 204466.0, 202871.0, 202065.0, 199026.0, 196004.0, 195179.0, 193225.0, 189142.0, 190629.0, 185958.0, 183435.0, 182445.0, 181003.0, 177714.0, 177066.0, 176459.0, 173183.0, 172498.0, 168982.0, 168526.0, 166561.0, 166676.0, 163205.0, 161700.0, 159002.0, 157138.0, 156360.0, 155075.0, 153980.0, 152122.0, 150120.0, 148595.0, 146894.0, 146346.0, 144359.0, 143181.0, 140798.0, 140292.0, 140132.0, 135705.0, 137252.0, 134358.0, 133585.0, 132797.0, 130784.0, 129705.0, 129194.0, 127651.0, 125425.0, 123154.0, 123534.0, 121702.0, 120843.0, 120157.0, 118150.0, 118032.0, 116287.0, 115672.0, 115285.0, 113973.0, 113388.0, 111495.0, 110880.0, 109568.0, 109774.0, 106461.0, 106323.0, 104967.0, 104643.0, 103502.0, 104092.0, 102644.0, 104190.0, 105582.0, 106395.0, 109830.0, 114841.0, 129101.0, 137277.0, 142550.0, 149411.0, 158227.0, 168096.0, 174291.0, 172829.0, 166554.0, 157611.0, 148944.0, 144233.0, 139998.0, 136330.0, 131842.0, 129541.0, 129004.0, 128481.0, 129033.0, 130659.0, 132068.0, 134279.0, 139090.0, 140299.0, 141070.0, 139709.0, 137719.0, 134209.0, 131433.0, 128674.0, 126290.0, 124120.0, 123793.0, 122970.0, 121338.0, 120432.0, 119968.0, 117555.0, 116829.0, 115500.0, 113855.0, 112896.0, 111465.0, 110772.0, 110957.0, 112426.0, 111254.0, 111707.0, 111340.0, 111586.0, 111292.0, 110646.0, 109792.0, 108029.0, 107390.0, 105776.0, 105663.0, 103972.0, 103007.0, 101590.0, 100175.0, 99562.0, 98693.0, 98671.0, 98117.0, 97191.0, 97018.0, 97311.0, 96194.0, 95550.0, 95144.0, 93372.0, 93893.0, 93201.0, 92543.0, 92113.0, 90136.0, 89461.0, 88138.0, 87355.0, 85956.0, 85598.0, 86478.0, 84765.0, 82918.0, 83029.0, 82903.0, 82383.0, 80994.0, 80362.0, 80657.0, 79170.0, 78562.0, 77901.0, 77659.0, 76640.0, 76562.0, 74963.0, 74868.0, 74225.0, 73558.0, 72662.0, 72417.0, 71988.0, 72266.0, 70731.0, 70142.0, 70512.0, 69499.0, 70128.0, 69245.0, 69133.0, 69000.0, 68097.0, 67476.0, 68128.0, 67207.0, 66850.0, 66931.0, 65032.0, 65035.0, 64151.0, 64225.0, 64499.0, 63902.0, 64004.0, 62786.0, 62028.0, 61914.0, 61245.0, 60335.0, 60764.0, 59707.0, 59732.0, 59747.0, 58824.0, 57525.0, 58046.0, 57436.0, 57468.0, 56501.0, 55913.0, 55589.0, 54643.0, 54997.0, 54668.0, 54088.0, 53744.0, 53649.0, 52389.0, 51945.0, 51164.0, 51927.0, 50908.0, 50968.0, 50256.0, 49614.0, 49768.0, 49726.0, 49569.0, 48483.0, 48473.0, 48055.0, 48228.0, 47425.0, 47197.0, 46796.0, 46509.0, 46731.0, 45584.0, 45705.0, 44891.0, 45651.0, 45364.0, 44624.0, 43876.0, 44809.0, 44017.0, 43414.0, 44280.0, 43760.0, 43098.0, 42721.0, 41847.0, 42834.0, 42514.0, 42229.0, 41980.0, 41429.0, 41665.0, 41478.0, 40280.0, 39655.0, 40277.0, 39400.0, 39810.0, 39155.0, 38942.0, 38524.0, 38987.0, 38578.0, 38149.0, 38412.0, 38098.0, 37363.0, 36986.0, 36513.0, 37225.0, 36471.0, 36750.0, 35670.0, 35654.0, 35111.0, 34972.0, 34597.0, 35546.0, 34397.0, 33960.0, 33984.0, 34213.0, 33654.0, 32605.0, 33079.0, 32964.0, 32997.0, 32004.0, 31906.0, 32380.0, 31624.0, 32007.0, 31770.0, 31195.0, 30987.0, 31307.0, 30791.0, 30367.0, 30066.0, 29673.0, 30650.0, 29888.0, 29718.0, 29515.0, 29614.0, 29248.0, 29056.0, 29206.0, 28654.0, 29277.0, 29832.0, 30293.0, 31739.0, 33143.0, 35386.0, 38005.0, 42283.0, 48606.0, 56194.0, 69613.0, 79228.0, 78678.0, 70758.0, 61475.0, 55560.0, 48418.0, 46756.0, 46864.0, 46747.0, 47284.0, 48928.0, 52790.0, 55932.0, 58923.0, 59484.0, 57711.0, 55943.0, 56622.0, 56076.0, 54291.0, 55565.0, 54753.0, 55316.0, 56510.0, 56593.0, 58280.0, 58112.0, 59354.0, 59508.0, 59830.0, 59774.0, 59720.0, 60352.0, 61062.0, 60197.0, 60383.0, 62077.0, 61434.0, 61409.0, 62046.0, 61559.0, 60863.0, 60725.0, 59335.0, 59226.0, 58273.0, 58599.0, 57555.0, 58101.0, 58111.0, 57519.0, 57933.0, 58333.0, 58251.0, 57303.0, 57649.0, 58043.0, 57903.0, 57674.0, 57288.0, 57416.0, 57397.0, 57375.0, 56610.0, 56347.0, 55843.0, 56699.0, 57092.0, 56753.0, 57061.0, 56104.0, 56540.0, 55981.0, 55924.0, 56330.0, 56196.0, 55254.0, 55222.0, 56086.0, 55215.0, 54807.0, 54411.0, 54094.0, 53300.0, 53501.0, 53106.0, 52811.0, 52449.0, 52493.0, 52201.0, 51868.0, 51787.0, 52627.0, 52250.0, 51317.0, 51700.0, 50665.0, 51154.0, 50692.0, 50475.0, 50328.0, 49430.0, 50273.0, 49697.0, 49659.0, 49063.0, 48921.0, 49142.0, 48431.0, 48374.0, 48587.0, 47717.0, 48105.0, 47322.0, 47748.0, 47022.0, 46769.0, 47170.0, 46016.0, 46376.0, 46418.0, 46073.0, 46342.0, 45866.0, 45809.0, 45854.0, 45620.0, 46447.0, 45839.0, 45895.0, 45773.0, 45814.0, 46322.0, 46128.0, 46276.0, 45886.0, 45706.0, 45632.0, 45236.0, 45691.0, 46823.0, 45675.0, 45593.0, 45620.0, 45590.0, 45132.0, 45595.0, 44343.0, 44604.0, 44320.0, 44520.0, 44621.0, 43953.0, 43822.0, 42680.0, 43177.0, 42882.0, 42749.0, 42090.0, 41447.0, 41790.0, 41044.0, 41576.0, 41097.0, 40515.0, 40769.0, 40758.0, 40750.0, 40255.0, 40484.0, 40040.0, 40121.0, 39719.0, 39147.0, 39235.0, 39314.0, 39923.0, 39422.0, 39004.0, 38943.0, 38509.0, 12805.0, 12619.0, 12776.0, 12568.0, 12480.0, 12535.0, 12879.0, 12543.0, 12161.0, 12394.0, 12572.0, 12042.0, 0.0, 0.0, 0.0, 0.0, #ENDOFDATA: Title :NTRAN VERSION 1.1 Keywords :XEDS, EELS Computer :DEC VAX 11/730-785, DEC PDP 11/2-11/73 Operating System :VAXVMS, RT-11 Programming Language :Fortran IV Hardware Requirements :None Author(s) :Nestor J. Zaluzec Correspondence Address :Argonne Nat. Lab, Electron Microscopy Center,Bldg 212 :Materials Science Division, Argonne, Illinois 60439, Abstract: NTRANS is a computer program which translates manufacturers XEDS and EELS spectral data into the EMMPDL data format. It utilies the RWEMMPDL subroutines contained in the EMMPDL. At present this version translates both EDAX and TRACOR-Northern and Link Systems data files. Examples of translated spectra can be found spectra can be found in the XEDS and EELS subdirectories of the EMMPDL. ------------------------------------------------------------------------------- C------------------------------------------------------------------- PROGRAM NTRANS C------------------------------------------------------------------- C C THIS PROGRAM TRANSLATES VARIOUS MCA MANUFACTURERS XEDS,EELS C DATA FILES INTO THE EMMPDL STANDARD FILE STRUCTURE C C THIS VERSION CONTAINS ALL NECESSARY CODE TO RUN C AND IS AN EXPANDED VERSION OF THE ORIGINAL NTRAN PROGRAM C C INPUT FILE LENGTH = 4096 CHANNELS MAXIMUM C OUTPUT FILE LENGTH = VARIABLE TO 4096 DEPENDING UPON NUMBER OF C FILES SUPPLIED, THEIR LENGTH & COMPRESSION C------------------------------------------------------------------- C VERSION DATE INITIALS REASON C------------------------------------------------------------------- C 1 14/MAY/87 NJZ CREATION EDAX 9100 FORMAT C 2 02/FEB/88 NJZ BUG FIXES EDAX 9900 FORMAT C 3 13/MAR/89 NJZ UPDATE TO use VERSION 1.1 EMMPDL format C 3.1 15/MAR/89 NJZ MINOR CLEAN UPS & TRACOR FORMAT C 3.2 9/MAY/89 NJZ INCREASE FILE NAME LENGTH TO 14 FROM 11 C 4 17/JUL/89 NJZ ADD LINK FORMAT C------------------------------------------------------------------- C C C C DIMENSION XS(4110) BYTE FNI(15),FNO(15) C C WRITE PROGRAM TITLE C 10 WRITE(7,20) 20 FORMAT(/, CX,'******************************',/, CX,'* NTRANS *',/, cx,'* Beta Test *',/, CX,'* XEDS/EELS FILE TRANSLATION *',/, CX,'* PROGRAM *',/, CX,'*EMMPDL File Format Ver. 1.1 *',/, CX,'* 8903130003-NJZ *',/, CX,'******************************') C C C INITIALIZE FILE NAMES TO ALL ZERO'S C 1111 DO 111 I=1,15 FNI(I)=0 FNO(I)=0 111 CONTINUE C C INPUT THE INPUT DATA FILE TYPE C WRITE (7,300) 300 FORMAT(/, C' Select Input File Format:',//,$, C C' [EMmpdl,EDax,KEvex,LInk,TRacor]:==> ') C' [EMmpdl,EDax,TRacor,LInk]:==> ') READ (5,310,ERR=1111) ATYPE 310 FORMAT(1A2) C C CURRENT SUPPORT EMMPDL, EDAX, TRACOR C IF (ATYPE.EQ.'ED') GO TO 210 IF (ATYPE.EQ.'EM') GO TO 210 IF (ATYPE.EQ.'TR') GO TO 210 IF (ATYPE.EQ.'LI') GO TO 210 C C ERROR IF UNSUPPORTED FILE TYPE C GO TO 800 C C C INPUT THE FILE NAME FOR TRANSLATION (10 CHARACTERS=" XXXXXX.XXX") C 210 WRITE(7,220) 220 FORMAT(/,$,' Enter the Input File Name: ') READ(5,221)(FNI(IB),IB=1,14) 221 FORMAT(14A1) C C INPUT NAME OF THE OUTPUT FILE C WRITE(7,230) 230 FORMAT(/,$,' Enter the Output File Name: ') READ (5,221) (FNO(IB),IB=1,14) C C NOW DETERMINE THE SPECTRAL TYPE - XEDS,EELS C FOR NON EMMPDL FILES NOW ONLY REQUIRED BY EDAX FORMAT C ASPEC='--' IF (ATYPE.EQ.'ED') WRITE (7,320) IF (ATYPE.EQ.'ED') READ (5,310) ASPEC 320 FORMAT(/,$,' Enter Spectral Type [XEDS,EELS]: ') C C DEBUGGING STATEMENTS FOLLOW C WRITE (7,112) ATYPE,ASPEC,(FNI(J),J=1,14),(FNO(J), J=1,14) 112 FORMAT (/,' Summary of NTRANS Responses',//, c' File Format =',A2,/, C' File Type =',A2,/, C' Input File =',14A1,/, C' Output File =',14A1,//) WRITE (7,113) 113 FORMAT($,' Is this Correct [Y]:') READ(5,310) ANS C C MISTAKE GO BACK TO BEGINNING C IF (ANS.EQ.'N') GO TO 1111 C C OKAY, SO NOW GO TO APPROPRIATE SECTION OF THE CODE FOR EACH MANUF C IF (ATYPE.EQ.'EM') GO TO 3000 IF (ATYPE.EQ.'ED') GO TO 400 IF (ATYPE.EQ.'TR') GO TO 450 IF (ATYPE.EQ.'LI') GO TO 600 C IF (ATYPE.EQ.'KE') GO TO 700 C C ERROR IF NOT A DESIGNATED MANUFACTURER FORMAT C GO TO 800 C C C C USER INDICATED EMMPDL INPUT FILE C C 3000 CALL RPDL (XS,NPT,FNI) GO TO 900 C C USER HAS INDICATED EDAX INPUT FILE C NOW CHECK DATA IS IT 9100 OR 9900 C 400 WRITE (7,410) 410 FORMAT (/,$,' Enter EDAX System Type [9100 or 9900]: ') READ (5,420) ANS 420 FORMAT (A2) IF ((ASPEC.EQ.'E').AND.(ANS.EQ.'91')) C CALL E91ELS (XS,NPT,FNI) IF ((ASPEC.EQ.'X').AND.(ANS.EQ.'91')) C CALL E91EDS (XS,NPT,FNI) IF ((ASPEC.EQ.'E').AND.(ANS.EQ.'99')) C CALL E99ELS (XS,NPT,FNI) IF ((ASPEC.EQ.'X').AND.(ANS.EQ.'99')) C CALL E99EDS (XS,NPT,FNI) GO TO 900 C C USER HAS SELECTED TRACOR INPUT FORMAT C 450 CALL TNEDS(XS,NPT,FNI) GO TO 900 C C USER HAS SELECTED LINK INPUT FORMAT C 600 CALL LSEDS(XS,NPT,FNI) GO TO 900 C C CHECK OPERATING CONDITIONS C c900 CALL CONDIT(XS) 900 CONTINUE C C C WRITE DATA TO OUTPUT FILE ALWAYS EMMPDL FORMAT!!!! C CALL WPDL(XS,NPT,FNO) 500 GO TO 1000 C C ERROR CONDITION MANUFACTURER UNKNOWN C 800 WRITE(7,810) 810 FORMAT(//,'**************** ERROR ********************',/, c' MANUFACTURER Selected Not Supported in this Version',/) C C END PROGRAM OR REPEAT C 1000 WRITE (7,5000) 5000 FORMAT(//,$,' Translate Another Spectrum [N]:') READ (5,310) ANS IF (ANS.EQ.'Y') GO TO 10 STOP END C------------------------------------------------------------------- SUBROUTINE E91EDS(XS,NPT,FN) C------------------------------------------------------------------- C C SUBROUTINE TO READ AN RT-11 DATA FILE IN EDAX 9100 XEDS FORMAT C INTO AN ARRAY XS(4110) C C XS=ARRAY CONTAINING DATA AND CALIBRATION CONSTANTS C NPT=NUMBER OF POINTS IN THE ARRAY C XS(1-NPT) = XEDS DATA (NPT MAXIMUM = 4096) C FN = FILE NAME OF EDAX DATA FILE C C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (DEGREES) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (DEGREES) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C C C C DIMENSION XS(4110),IXL(72) BYTE FN(15) C C C INTEGER IB(8),IDAT(5),MLAB(7),ITIME(4) INTEGER JDATE(5) DO 9 IC=1,7 MLAB(IC)=' ' 9 CONTINUE C C TRY TO OPEN THE FILE C OPEN(UNIT=12,NAME=FN,TYPE='OLD',FORM='UNFORMATTED',ERR=200) C C READ EDAX HEADER INFORMATION C C C READ THIS INTO MEMORY C READ(12) EVCH,MSIZE,STEN,ENEN,IERC C C C STEN=STEN*1000. !CHANGE KEV TO EV READ(12) (JDATE(I),I=1,5),(ITIME(IJ),IJ=1,4),ETIME READ(12) (MLAB(IK),IK=1,7) READ(12) X !ELEMENT LIST HERE READ(12) X !SCALE,PRSTX,MPRSTX READ(12) X !WINDOW LIST HERE READ(12) VOLTAG,TILT,ELEV,BCF C C DEBUGGING STATEMENT HERE C C WRITE(7,10) EVCH,MSIZE,STEN,ENEN,IERC,JDATE,ITIME,ETIME,MLAB, C 1VOLTAG,TILT,ELEV,BCF C10 FORMAT( C 11X,'PARAM=',/, C 11X,1F6.1,1X,I4,1F6.1,1F6.1,I4,/, C 11X,5A2,1X,4A2,1X,1F10.2,/,1X, C 17A2,/,1X,4(F6.1,1X)) C C READ IN 2048 CHANNELS OF DATA THIS IS THE STANDARD LENGTH FOR C EDAX 9100 X-RAY FILES C DO 110 I=1,2048 READ(12,END=160) XS(I) 110 CONTINUE C C CLOSE INPUT FILE C 160 CLOSE(UNIT=12,DISP='SAVE') NPT=2048 C C WRITE OUT NAME AND LABEL C WRITE(7,21)(FN(IZ),IZ=1,14),(MLAB(ID),ID=1,7),NPT 21 FORMAT(/,' EDAX Spectrum Identification',/,23('-'),/, C' FILE NAME= ',15A1,/,' LABEL= ',7A2,/,' NPT =',I5) C C STORE CALIBRATION CONSTANTS C XS(2049)=STEN XS(2050)=EVCH XS(2051)=VOLTAG XS(2052)=1. XS(2053)=1. XS(2054)=BCF XS(2055)=ETIME XS(2056)=0. XS(2057)=0. XS(2058)=0. RETURN C C WRITE ERROR MESSAGE C 200 WRITE (7,210) 210 FORMAT(' ERROR: Data File Missing or Disk Problems') RETURN END C C C C C------------------------------------------------------------------- SUBROUTINE E99EDS(XS,NPT,FN) C------------------------------------------------------------------- C C SUBROUTINE TO READ AN RT-11 DATA FILE IN EDAX 9900 XEDS FORMAT C INTO AN ARRAY XS(4110) C C XS=ARRAY CONTAINING DATA AND CALIBRATION CONSTANTS C NPT=NUMBER OF POINTS IN THE ARRAY C XS(1-NPT) = XEDS DATA (NPT MAXIMUM = 4096) C FN = FILE NAME OF EDAX DATA FILE C C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (DEGREES) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (DEGREES) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C C C C DIMENSION XS(4110),IXL(72),CBUF(16) BYTE FN(15),FNED(15) C C C INTEGER IB(8),IDAT(5),MLAB(7),ITIME(4) INTEGER JDATE(5) DO 9 IC=1,7 MLAB(IC)=' ' 9 CONTINUE C C TRY TO OPEN THE FILE C OPEN(UNIT=12,NAME=FN,TYPE='OLD',FORM='UNFORMATTED', CRECORDSIZE=16,ACCESS='DIRECT',ASSOCIATEVARIABLE=NREC,ERR=200) C C READ EDAX HEADER INFORMATION INTO MEMORY C READ(12'1) (FNED(IZ),IZ=1,7),(JDATE(I),I=1,5),(ITIME(IJ),IJ=1,4),ETIME READ(12'2) (MLAB(IK),IK=1,7) !SPECTRUM LABEL READ(12'3) CBUF EVCH=CBUF(1) STEN=CBUF(2) ENEN=CBUF(3) ETIME=CBUF(4) PRST=CBUF(7) PKMAXV=CBUF(8) VOLTAG=CBUF(10) TILT=CBUF(11) TKOFF=CBUF(12) BCF=CBUF(13) R2=CBUF(14) BETHIK=CBUF(15) SIDL=CBUF(16) C C C STEN=STEN*1000. !CHANGE KEV TO EV ENEN=ENEN*1000. !CHANGE KEV TO EV C READ(12'5) X !ELEMENT LIST HERE C READ(12'6) X !SYMBOL LIST HERE C READ(12'7) X ! C C C READ IN 4096 CHANNELS OF DATA THIS IS THE STANDARD LENGTH FOR C EDAX 9900 X-RAY FILES C C CALCUALTE NUMBER OF CHANNELS OF DATA TO BE READ-IN C NREC=33 ISTR =STEN/EVCH +1 IEND =ENEN/EVCH NPT=IEND-ISTR DO 110 I=ISTR,IEND,16 READ (12'NREC) CBUF C C DEBUGGING STATEMENT HERE C C WRITE (7,1000) I C1000 FORMAT (I4) K=1 DO 111 J=I,I+16 XS(J)=CBUF(K) K=K+1 111 CONTINUE 110 CONTINUE C DO 110 I=1,NPT C READ(12'33) XS(I) C110 CONTINUE C C CLOSE INPUT FILE C 160 CLOSE(UNIT=12,DISP='SAVE') C C WRITE OUT NAME AND LABEL C WRITE(7,21)(FNED(IZ),IZ=1,14),(MLAB(ID),ID=1,7),NPT 21 FORMAT(/,' EDAX Spectrum Identification',/,23('-'),/, C' FILE NAME= ',15A1,/,' LABEL= ',7A2,/,' NPT = ',I5) C C STORE CALIBRATION CONSTANTS C XS(2049)=STEN XS(2050)=EVCH XS(2051)=VOLTAG XS(2052)=1. XS(2053)=1. XS(2054)=BCF XS(2055)=ETIME XS(2056)=0. XS(2057)=0. XS(2058)=0. RETURN C C WRITE ERROR MESSAGE C 200 WRITE (7,210) 210 FORMAT(' ERROR: Data File Missing or Disk Problems') RETURN END C C C C C C------------------------------------------------------------------- SUBROUTINE E91ELS(XS,NPT,FN) C------------------------------------------------------------------- C C C SUBROUTINE TO READ AN RT-11 DATA FILE IN EDAX 9100 EELS FORMAT C INTO AN ARRAY XS(4110) C C XS=ARRAY CONTAINING DATA AND CALIBRATION CONSTANTS C NPT=NUMBER OF POINTS IN THE ARRAY C XS(1-NPT) = XEDS DATA (NPT MAXIMUM = 4096) C C C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (DEGREES) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (DEGREES) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C C C C DIMENSION XS(4110),IXL(72) BYTE FN(15),FNED(15) INTEGER QER LOGICAL*1 CALFLG C C C ARRAY FN FNED ARE USED FOR FILE NAME STORAGE C INTEGER IB(8),IDAT(5),MLAB(7),ITIME(4) INTEGER JDATE(5) BYTE ISYMBL(29) C C FILL UP SOME ARRAYS WITH BLANKS C DO 9 IC=1,7 MLAB(IC)=' ' 9 CONTINUE C C ARRAY FN MUST BE NULL TERMINATED C C OPEN INPUT FILE FN C OPEN FILE ERROR IF DOESNT EXIST TERMINATES SUBROUTINE C AND THE NEXTR FILE IS SEARCHED FOR C C OPEN(UNIT=12,NAME=FN,TYPE='OLD',FORM='UNFORMATTED',ERR=200) GO TO 201 C C ERROR CONDITION FILE DOESNT EXIST ? QUIT C 200 WRITE(7,202) (FN(I),I=1,14) 202 FORMAT(' THE FILE ****',15A1,'**** DOES NOT EXIST ',/) RETURN 201 CONTINUE C C READ EDAX HEADER INFORMATION C READ (12) IMULT,ISCAL,IGAIN1,IGAIN2,ISTART,IEND, CIRSET,IMEM,IEEDS,EDWELL,EVCH,IHICH,VOLTAG C,ALPHA,BETA,INES,ICHNL,OFFSET READ(12) (ISYMBL(I),I=1,29),CALFLG READ(12) SPACE READ(12) SPACE READ(12) SPACE C C READ IN 1024 CHANNELS OF DATA EDAX 9100 EELS DEFAULT OF 1024 CHANNELS C DO 110 I=1,1024 READ(12) XS(I) 110 CONTINUE 140 CONTINUE C C STORE NUMBER OF POINTS C NPT=1024 C C CLOSE INPUT FILE C 160 CLOSE(UNIT=12,DISP='SAVE') C C WRITE OUT NAME AND LABEL TO TERMINAL C WRITE(7,21) 21 FORMAT(/,' EDAX Spectrum Identification',/,23('-')) WRITE(7,3) (FN(K),K=1,14),(ISYMBL(J),J=1,29),NPT 3 FORMAT(' FILE NAME= ',15A1,/, C' LABEL= ',29A1,/,' NPT = ',I5) C C FILL XS(1021-1030) WITH ZERO'S C DO 22 I=1025,1035 22 XS(I)=0.0 C C READ IN CALIBRATION CONSTANTS C IF THEY EXIST C XS(1025)=OFFSET XS(1026)=EVCH XS(1027)=VOLTAGE XS(1028)=ALPHA XS(1029)=BETA XS(1030)=EDWELL XS(1031)=0. C WRITE(7,7) XS(1021),XS(1022),XS(1023),XS(1024),XS(1025) C7 FORMAT(//, C C' OFFSET = ',1F9.3,' EV',/, C C' EV/CHANNEL = ',1F9.3,/, C C' ACCELERATING VOLTAGE = ',1F9.1,' KEV',/, C C' INCID. BEAM DIVERGENCE = ',1F9.3,' MR',/, C C' SCATTERING ANGLE = ',1F9.3,' MR',/) RETURN END C C C C------------------------------------------------------------------- SUBROUTINE E99ELS(XS,NPT,FNI) C------------------------------------------------------------------- C C THIS ROUTINE READS EDAX 9900 EELS FILES C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (DEGREES) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (DEGREES) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C C C BYTE LABELS(29) BYTE MLAB(30),FILENM(15),FNI(15) INTEGER*2 BBUF(18) DIMENSION XS(4110),INAME(8),ICMNT(48),IXL(72) INTEGER*2 QER INTEGER*2 EMULT,ESCAL,EGAIN1,EGAIN2,ESTART,EEND INTEGER*2 ERSET,EMEM,EEDS,EHICH,ENES,ESYMBL,ECHNL C------------------------------------------------------------------- C C DEFINITION OF EELS parameters C C EMULT Number of multiple EELS scans to be taken (1-255) C ESCAL MCA scaling factor (0-3) C EGAIN1 Channel number for EELS gain change during scan C (0-1023, 0=off) C EGAIN2 Channel number for EELS gain change during scan C (0-1023, 0=off) C ESTART Starting channel for EELS scan C EEND Ending channel for EELS scan C ERSET Reset delay time C EMEM EELS memory (0=A, 1=B) C EEDS Simultaneous EDS collection flag C EDWELL EELS data collection dwell period C Units are milliseconds (0.10 - 65,535) C EEVCH EELS eV/channel C EHICH Highest channel number C ENES Number of EELS elements saved (0-16) C ESYMBL(17) Table for up to 16 saved EELS elements in C order by ECHNL C ECHNL(17) Table of associated channel numbers of C elements saved in ESYMBL C EZEV Channel #0 energy loss (eV) C ICZERO channel # for displayed value at lowest major C tik mark. C CBASE displayed value at lowest major tik mark. C-------------------------------------------------------------------- C C OPEN THE DATA FILE FOR INPUT C 300 OPEN(UNIT=10,NAME=FNI,TYPE='OLD',FORM='UNFORMATTED', 1 ACCESS='DIRECT',RECORDSIZE=16,ERR=200,! recordtype='fixed', 2 ASSOCIATEVARIABLE=NREC) C C READ IN THE DATA HEADERS C READ(10'1) K,INAM,(FILENM(I),I=1,10),(BBUF(I),I=1,18),J READ(10'2) EMULT,ESCAL,EGAIN1,EGAIN2,EHICH,ICZERO,CALFLG,LIBFLG READ(10'3) EDWELL,EEVCH,VOLTAG,ALPHA,BETA,CBASE,EZEV,FULSCL READ(10'4) (LABELS(I), I=1,29) READ(10'5) ENELS,ATNUM READ(10'6) EDGEID READ(10'7) (FILENM(I),I=1,10) READ(10'8) OPCOND C C INITIALIZE STORAGE ARRAY TO ZERO C DO 330 I=1,4096 XS(I)=0.0 330 CONTINUE NREC=21 NSEGS=(EHICH+15)/16 C C NOW READ THE DATA IN SEGMENTS OF 16 C LL=1 DO 350 I = 1,NSEGS READ(10'NREC,ERR=351) (XS(IL), IL=LL,LL+15) LL=LL+16 350 CONTINUE 351 CLOSE(UNIT=10) NPT=LL-1 C C C WRITE OUT SOME INFO HERE TO THE USER C C WRITE(7,21) 21 FORMAT(/,' EDAX Spectrum Identification',/,23('-')) WRITE(7,3) (FILENM(K),K=1,10),(LABELS(J),J=1,29),NPT 3 FORMAT(X,' File Id= ',10A1,/,' LABEL= ',29A1, /,' NPT =',I5) C C PASS THE LABEL BACK C DO 400 J=1,29 MLAB(J)=LABELS(J) 400 CONTINUE MLAB(30)=0 C C RECORD THE CALIBRATION CONSTANTS C XS(NPT+1)=EZEV !OFFSET ENERGY OF FIRST CHANNEL XS(NPT+2)=EEVCH !EV/CHANNEL XS(NPT+3)=VOLTAG !ACCELERATING VOLTAGE (KEV) XS(NPT+4)=ALPHA !INCIDENT BEAM DIVERGENCE (MR) XS(NPT+5)=BETA !SCATTERING ANGLE (MR) XS(NPT+6)=EDWELL !LTIME/DWELL 08800 CONTINUE RETURN C C ERROR MESSAGE C 200 WRITE(7,202) (FNI(I),I=1,14) 202 FORMAT(' ERROR: THE FILE ****',10A1,'**** DOES NOT EXIST ',/) RETURN END C------------------------------------------------------------------- SUBROUTINE RPDL(XS,NPT,FN) C------------------------------------------------------------------- C EMMPDL FILE FORMAT VERSION NUMBER 1.1 C C C SUBROUTINE TO READ AN ASCII DATA FILE IN EMMPDL DATA FORMAT C INTO A REAL ARRAY XS OF DIMENSION XS(NPT+14) FROM A FILE "FN" C C NPT= NUMBER OF DATA POINTS IN THE SPECTRUM C C FN = ASCII FILE NAME OF THE SPECTRAL DATA FILE C C XS(1)-XS(NPT)=SPECTRAL DATA C C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (MR) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (MR) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C C C MAXIMUM NUMBER OF DATA POINTS IN SPECTRUM = 4096 C MAXIMUM ARRAY SIZE 4110 C C EMMPDL FILE FORMAT VERSION 1.1 C C HEADER LINES: C ------------- C LINE 1 = TITLE OF OF FILE CONTAINS TEXT IDENTIFICATION C LINE 2-15 = EMMPDL HEADER INFORMATION (SEE BELOW FOR DETAILS) C LINES 16 - "NLINE"= DATA STORED AS "NCOL" DATA POINTS C EACH DATA POINT SEPERATED BY A C COMMA AS A DELIMINATOR, C LINE "NLINE" +1 = END OF FILE MARKER C C THE HEADER LINES 1-15 ARE DESCRIBED BELOW; EACH BEGINS WITH C A MARKER THE NUMBER SIGN (#) WHICH IS FOLLOWED BY AT LEAST A C FOUR CHARACTER DESCRIPTOR, IF THE DESCRIPTOR IS FOLLOWED BY A C DASH (-) THEN THE NEXT FOUR CHARACTERS HOLD THE UNITS C OF MEASUREMENT OF THE DESCRIPTOR. THE COLON SIGN (:) IS THE END C OF THE TEXT FIELD (ALWAYS THE 10TH CHARACTER BY THE WAY) AND C THE REMAINING TEXT IN THE LINE SHOULD BE READ AS THE VALUE OF C THE DESCRIPTOR C C FOR EXAMPLE C C #VOLT-KV : 100.00 C C MEANS THE VALUE OF THE PARAMETER ON THIS C LINE IS A VOLTAGE IN UNITS OF KV AND IS 100.00 C C THE FOLLOWING DOCUMENTS THE HEADER LINES AND DEFINITIONS USED CLINE ---------------------------------------------------------------- C1 LABEL #TITLE := TITLE OF SPECTRUM C2 LABEL #VERSION := VERSION NUMBER OF EMMPDL FILE C3 LABEL #NPT := NUMBER OF DATA POINTS IN SPECTRUM (MAX=4096) C4 LABEL #NCOL := NUMBER OF COLUMNS OF DATA/LINE OF SPECTRUM C5 LABEL #OFFS-EV := OFFSET ENERGY OF FIRST CHANNEL (IN EV) C6 LABEL #EVCH := EV/CHANNEL C7 LABEL #VOLT-KV := ACCELERATING VOLTAGE (KV) C8 LABEL #ALPH-MR := INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT FOR XEDS DATA C9 LABEL #BETA-MR := SCATTERING ANGLE (MR) FOR EELS DATA C = Y-AXIS (CUP AXIS) TILT FOR XEDS DATA C10 LABEL #LTIM-MS := LIVE TIME (DWELL MSEC) FOR EELS OR C = SIMPLE LIVE TIME FOR XEDS DATA C11 LABEL #DTIM-MS := DEAD TIME C12 LABEL #BCUR-NA := INCIDENT BEAM CURRENT IN nA C13 LABEL #BDIA-NM := BEAM(PROBE) DIAMETER IN nm C14 LABEL #THCK-NM := SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C15 LABEL #SPECTRUM:= INDICATES NEXT LINE STARTS SPECTRAL DATA C = OWNER(S) SHOULD GIVE THEIR NAMES AFTER THE COLON: C16-? LABEL NOTHING = DATA @ NCOL/LINE FOR NPT NUMBER OF POINTS C LABEL #ENDDATA := INDICATES END OF DATA FILE C C C C------------------------------------------------------------------- C DIMENSION XS(4110),IXL(79) BYTE DAY(9),TIM(8),FN(15) C C READ IN DATA FILE NAME IN CASE THE USER HAS NOT SUPPLIED ONE C CHECK FN(1). IF IT IS BLANK THEN READ IN A NAME C OTHERWISE ASSUME THAT THE USER HAS SUPPLIED ONE C C IF (FN(1).NE.' ') GO TO 253 DO 300 I=1,15 300 FN(I)=0 WRITE(7,251) 251 FORMAT($,' Enter EMMPDL Data File Name [xxxxxx.xxx]: ') READ(5,252) (FN(J),J=1,14) 252 FORMAT(14A1) C C DATA FILE NAME MUST BE NULL TERMINATED C FN(15)=0 C C C C OPEN THE DATA FILE (FN) C C 253 OPEN (UNIT=11,NAME=FN,TYPE='OLD',ACCESS='SEQUENTIAL') C C C WRITE IT OUT ON THE SCREEN FOR THE USER C C CALL DATE(DAY) CALL TIME(TIM) WRITE(7,1) DAY,TIM,(FN(J),J=1,14) 1 FORMAT(1X,9A1,' at ',8A1,/,' Input Data File = ',14A1) C C TELL USER SOME INFORMATION ABOUT THE FILE C WRITE(7,10) 10 FORMAT(' SPECTRUM IDENTIFICATION',/,23('-')) C C READ/WRITE THE FILE HEADER/DESCRIPTION LINE(S) C READ(11,20) IXL 20 FORMAT(79A1) 30 FORMAT(1X,79A1) READ(11,40,ERR=50) VERS READ(11,40,ERR=50) ANPT READ(11,40,ERR=50) ACOL NPT=ANPT READ(11,40,ERR=50) XS(NPT+1) READ(11,40,ERR=50) XS(NPT+2) READ(11,40,ERR=50) XS(NPT+3) READ(11,40,ERR=50) XS(NPT+4) READ(11,40,ERR=50) XS(NPT+5) READ(11,40,ERR=50) XS(NPT+6) READ(11,40,ERR=50) XS(NPT+7) READ(11,40,ERR=50) XS(NPT+8) READ(11,40,ERR=50) XS(NPT+9) READ(11,40,ERR=50) XS(NPT+10) 40 FORMAT(11X,F15.0) C C IF AN ERROR OCCURS ON READ OF LINE 2 C THEN THE DATA FILE WAS VERSION 1.0 FORMAT C REWIND 11 C C THIS WRITES OUT THE INFO ON THE SCREEN FOR THE USER C DO 60 I=1,15 READ(11,20) IXL WRITE(7,30) IXL 60 CONTINUE WRITE(7,62) 62 FORMAT(//,' -- Reading Data from disk --') C C C NUMBER OF LINES OF DATA = "ANPT/ACOL", C NUMBER OF COLUMNS OF DATA/LINE = "ACOL" C NCOL=ACOL C C THE FOLLOWING FORMAT ASSUMES THAT WE WILL NEVER HAVE MORE C THAN 10 COLUMNS OF DATA PER LINE C 1000 FORMAT(10F15.0) C C CALCULATE THE REMAINING NUMBER OF LINES C NLINES=NPT/NCOL IF((ANPT/NCOL - NPT/NCOL).GT.0) NLINES= NPT/NCOL +1 C C NOW LOOP THROUGH THE DATA READING EACH LINE STARTING AT LINE 15 C OF THE DATA FILE C DO 80 I=1,NLINES IF=NCOL*(I-1) + 1 IL=NCOL*I IF (IL.GE.NPT) IL=NPT C READ(11,1000,END=80,ERR=80) (XS(J), J=IF,IL) 80 CONTINUE IF((XS(NPT+1).EQ.0).AND.(XS(NPT+2).EQ.0)) WRITE(7,100) 100 FORMAT(' UNCALIBRATED SPECTRUM:') C C DEBUGGING WRITE STATEMENT HERE C C WRITE(7,110,ERR=120) (XS(J), J=NPT+1,NPT+10) C110 FORMAT(//, C C ' OFFSET = ',1F10.2,' eV',/, C C ' EV/CHANNEL = ',1F10.2,/, C C ' ACCELERATING VOLTAGE = ',1F10.1,' kV',/, C C ' INCID. BEAM DIVERGENCE = ',1F10.1,' mR',/, C C ' SCATTERING ANGLE = ',1F10.1,' mR',/, C C ' LIVE/DWELL TIME = ',1F10.1,' SEC',/, C C ' DEAD TIME = ',1F10.1,' SEC',/, C C ' BEAM CURRENT = ',1F10.1,' nA',/, C C ' PROBE DIAMETER = ',1F10.1,' nm',/, C C ' SPECIMEN THICKNESS = ',1F10.1,' nm',/) C120 WRITE(7,130) C130 FORMAT (' HIT TO CONTINUE') C READ(5,20) X C C C CLOSE DATA FILE C CALL CLOSE(11) C CALL ERASE !ERASE SCREEN 50 RETURN END C C C C C------------------------------------------------------------------- SUBROUTINE WPDL(XS,NPT,FN) C------------------------------------------------------------------- C EMMPDL FILE FORMAT VERSION NUMBER 1.1 C C C SUBROUTINE TO READ AN ASCII DATA FILE IN EMMPDL DATA FORMAT C INTO A REAL ARRAY XS OF DIMENSION XS(NPT+14) FROM A FILE "FN" C C NPT= NUMBER OF DATA POINTS IN THE SPECTRUM C C FN = ASCII FILE NAME OF THE SPECTRAL DATA FILE C C XS(1)-XS(NPT)=SPECTRAL DATA C C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (MR) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (MR) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C C C MAXIMUM NUMBER OF DATA POINTS IN SPECTRUM = 4096 C MAXIMUM ARRAY SIZE 4110 C C EMMPDL FILE FORMAT VERSION 1.1 C C HEADER LINES: C ------------- C LINE 1 = TITLE OF OF FILE CONTAINS TEXT IDENTIFICATION C LINE 2-15 = EMMPDL HEADER INFORMATION (SEE BELOW FOR DETAILS) C LINES 16 - "NLINE"= DATA STORED AS "NCOL" DATA POINTS C EACH DATA POINT SEPERATED BY A C COMMA AS A DELIMINATOR, C LINE "NLINE" +1 = END OF FILE MARKER C C THE HEADER LINES 1-15 ARE DESCRIBED BELOW; EACH BEGINS WITH C A MARKER THE NUMBER SIGN (#) WHICH IS FOLLOWED BY AT LEAST A C FOUR CHARACTER DESCRIPTOR, IF THE DESCRIPTOR IS FOLLOWED BY A C DASH (-) THEN THE NEXT FOUR CHARACTERS HOLD THE UNITS C OF MEASUREMENT OF THE DESCRIPTOR. THE COLON SIGN (:) IS THE END C OF THE TEXT FIELD (ALWAYS THE 10TH CHARACTER BY THE WAY) AND C THE REMAINING TEXT IN THE LINE SHOULD BE READ AS THE VALUE OF C THE DESCRIPTOR C C FOR EXAMPLE C C #VOLT-KV : 100.00 C C MEANS THE VALUE OF THE PARAMETER ON THIS C LINE IS A VOLTAGE IN UNITS OF KV AND IS 100.00 C C THE FOLLOWING DOCUMENTS THE HEADER LINES AND DEFINITIONS USED CLINE ---------------------------------------------------------------- C1 LABEL #TITLE := TITLE OF SPECTRUM C2 LABEL #VERSION := VERSION NUMBER OF EMMPDL FILE C3 LABEL #NPT := NUMBER OF DATA POINTS IN SPECTRUM (MAX=4096) C4 LABEL #NCOL := NUMBER OF COLUMNS OF DATA/LINE OF SPECTRUM C5 LABEL #OFFS-EV := OFFSET ENERGY OF FIRST CHANNEL (IN EV) C6 LABEL #EVCH := EV/CHANNEL C7 LABEL #VOLT-KV := ACCELERATING VOLTAGE (KV) C8 LABEL #ALPH-MR := INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT FOR XEDS DATA C9 LABEL #BETA-MR := SCATTERING ANGLE (MR) FOR EELS DATA C = Y-AXIS (CUP AXIS) TILT FOR XEDS DATA C10 LABEL #LTIM-MS := LIVE TIME (DWELL MSEC) FOR EELS OR C = SIMPLE LIVE TIME FOR XEDS DATA C11 LABEL #DTIM-MS := DEAD TIME C12 LABEL #BCUR-NA := INCIDENT BEAM CURRENT IN nA C13 LABEL #BDIA-NM := BEAM(PROBE) DIAMETER IN nm C14 LABEL #THCK-NM := SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C15 LABEL #SPECTRUM:= INDICATES NEXT LINE STARTS SPECTRAL DATA C = OWNER(S) SHOULD GIVE THEIR NAMES AFTER THE COLON: C16-? LABEL NOTHING = DATA @ NCOL/LINE FOR NPT NUMBER OF POINTS C LABEL #ENDDATA := INDICATES END OF DATA FILE C C C------------------------------------------------------------------- C C C C DIMENSION XS(4110),IXL(72) BYTE FN(15),DAY(9),TIM(8) VERS=1.1 ACOL=5. ANPT=NPT C C C READ IN DATA FILE NAME IN CASE THE USER HAS NOT SUPPLIED ONE C CHECK FN(1). IF IT IS BLANK THEN READ IN A NAME C OTHERWISE ASSUME THAT THE USER HAS SUPPLIED ONE C C IF (FN(1).NE.' ') GO TO 253 DO 300 I=1,15 300 FN(I)=0 WRITE(7,251) 251 FORMAT($,' Enter EMMPDL Data File Name [xxxxxx.xxx]: ') READ(5,252) (FN(J),J=1,14) 252 FORMAT(11A1) C C DATA FILE NAME MUST BE NULL TERMINATED C FN(15)=0 C C OPEN THE NEW DATA FILE USING THE SUPPLIED NAME C 253 OPEN (UNIT=11,NAME=FN,TYPE='NEW',ACCESS='SEQUENTIAL',ERR=2000) C C C WRITE IT OUT C C CALL DATE(DAY) CALL TIME(TIM) WRITE(7,1) DAY,TIM,(FN(J),J=1,14) 1 FORMAT(1X,/' EMMPDL Data File Being Created',/, C9A1,' at ',8A1,/,' Output Data File Name = ',14A1) C C READ IN TITLE IN TEXT FORMAT C WRITE(7,10) 10 FORMAT(/,' Input Spectrum Identification',/,23('-'),/, C' Enter Comment line [65 characters=Max]',/,$,'#Title :') READ(5,20) IXL 20 FORMAT(72A1) WRITE(11,30) (IXL(J), J=1,65) 30 FORMAT(1X,'#Title :',65A1) WRITE(7,32) 32 FORMAT($,' Input Owner(s) Name:') READ(5,20) (IXL(J), J=1,59) C C DETERMINE THE NUMBER OF CHANNELS C WRITE (7,101) NPT 101 FORMAT (/,' This spectral file contains ',I4,' data channels',/) C C C ASK FOR HOW MANY COLUMNS /LINE ARE DESIRED C C WRITE (7,110) 110 FORMAT($,' Enter Number of Columns/Line [1-10; Default=5]: ') READ (5,112) ACOL 112 FORMAT(1F10.0) C C NOW WRITE HEADER INFO TO THE DATA FILE C IF ((ACOL.LE.0).OR.(ACOL.GT.10)) ACOL=5. WRITE(11,40) VERS 40 FORMAT(1X,'#Version :',F10.1) WRITE(11,41) ANPT 41 FORMAT(1X,'#NPTS- :',F10.1) WRITE(11,42) ACOL 42 FORMAT(1X,'#NCOL- :',F10.1) C C WRITE CALIBRATION CONSTANTS C WRITE(11,43) XS(NPT+1) 43 FORMAT(1X,'#OFFS-EV :',F10.3) WRITE(11,44) XS(NPT+2) 44 FORMAT(1X,'#EVCH- :',F10.3) WRITE(11,45) XS(NPT+3) 45 FORMAT(1X,'#VOLT-KV :',F10.1) WRITE(11,46) XS(NPT+4) 46 FORMAT(1X,'#ALPH-MR :',F10.2) WRITE(11,47) XS(NPT+5) 47 FORMAT(1X,'#BETA-MR :',F10.2) WRITE(11,48) XS(NPT+6) 48 FORMAT(1X,'#LTIM-MS :',F10.1) WRITE(11,49) XS(NPT+7) 49 FORMAT(1X,'#DTIM-MS :',F10.1) WRITE(11,50) XS(NPT+8) 50 FORMAT(1X,'#BCUR-NA :',F10.2) WRITE(11,51) XS(NPT+9) 51 FORMAT(1X,'#BDIA-NM :',F10.2) WRITE(11,52) XS(NPT+10) 52 FORMAT(1X,'#THCK-NM :',F10.1) C C WRITE SPECTRUM START & OWNERS NAME C WRITE(11,53) (IXL(J), J=1,59) 53 FORMAT(1X,'#SPECTRUM:',59A1) NCOL=ACOL C C NOW LOOP THROUGH THE DATA WRITING NCOL values/line C C DO 200 J=1,NPT,NCOL IS=J IF=J+NCOL-1 IF (IF.GE.NPT) IF=NPT IF(NCOL.GT.1)WRITE (11,1000) (XS(JK), JK=IS,IF) IF(NCOL.EQ.1)WRITE (11,1010) XS(J) 1000 FORMAT(1X,9(1F10.1,','),1F10.1) 1010 FORMAT(1X,1F10.1) 200 CONTINUE C C WRITE LAST LINE OF FILE TEXT TO INDICATE FILE IS DONE C WRITE (11,201) 201 FORMAT(1X,'#ENDDATA :') 4 CONTINUE CALL CLOSE(11) RETURN 2000 WRITE(7,2001) 2001 FORMAT(' ERROR in writing file check FILENAME and/or DISK quota') RETURN END C--------------------------------------------------------------------------- SUBROUTINE TNEDS (XS,NPT,FN) C-------------------------------------------------------------------------- C C C SUBROUTINE TO READ IN A TRACOR NORTHERN EDS/ELS DATA FILE C AND STORE IT IN TO AN ARRAY XS C SUBROUTINE TO READ AN ASCII DATA FILE IN EMMPDL DATA FORMAT C INTO A REAL ARRAY XS OF DIMENSION XS(NPT+14) FROM A FILE "FN" C C NPT= NUMBER OF DATA POINTS IN THE SPECTRUM C C FN = ASCII FILE NAME OF THE SPECTRAL DATA FILE C C XS(1)-XS(NPT)=SPECTRAL DATA C C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (MR) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (MR) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C C C MAXIMUM NUMBER OF DATA POINTS IN SPECTRUM = 4096 C MAXIMUM ARRAY SIZE 4110 C C adapted from a routine called RDSPEC supplied by Tracor Northern C TN-5500 MANUAL DATA FILE FORMATS supplied by Tracor Northern C C SPECTRAL DATA IS 24 BITS DEEP C C BLOCK 0 = HEADER C WORDS 1-11 = LABEL C WORD 56 = NEGATIVE OF NUMBER OF BLOCKS OF DATA (N) C WORD 57-155= BLOCK FORMAT WORD FOR EACH DATA BLOCK OF C LOWER 8 BITS C BIT 8 SET IMPLIES 16 BIT DATA C BIT 8 CLEAR IMPLIES 8 BIT DATA (HIGH 8BITS C OF THE 24 BIT DATA) C WORD 156= ACQUISITION LIVE TIME C WORD 157-255= BLOCK FORMT WORD FOR UPPER 8 BITS C C BLOCK 1-N = LOWER 16BITS OF SPECTRAL DATA C BLOCK N+ = HIGHER 8 BITS OF SPECTRAL DATA C LAST BLOCK = OTHER (NON-SPECTRAL DATA) INFORMATION LABELS ETC... C------------------------------------------------------------------------- C C CODE: C DIMENSION XS(4110) LOGICAL*1 FN(15),IBYTE(8192) INTEGER*2 BLK0(256),IDATA(4096) EQUIVALENCE (IBYTE,IDATA) C C BEGIN BY ZEROING THE DATA ARRAY C DO 10 I=1,4110 10 XS(I)=0. C C C OPEN THE TRACOR FILE C DEFINE FILE 1 (0,256,U,IX) CALL ASSIGN (1,FN,15,'OLD') c OPEN (UNIT=1,NAME=FN,ACCESS='DIRECT',TYPE='OLD', FORM='UNFORMATTED', c C ASSOCIATEVARIABLE=IX, RECORDSIZE=256,DISPOSE='KEEP') C C TELL USER WE ARE READING FILE C WRITE (7,15) (FN(j), j=1,14) 15 FORMAT(/, ' Opening TRACOR Data file: ',14A1,//, c ' ----- Reading Data From Disk -----') C C - READ HEADER BLOCK0 FORTRAN CALLS IT BLOCK 1 C READ (1'1) BLK0 C C NOW SORT OUT HOW MANY BLOCKS ARE IN THE FILE, CHECK THE FORMAT WORD C BY LOOKING FOR BIT 8 BEING SET OR NOT C COUNT THESE OCCURANCES AND DETERMINE THE C NUMBER OF BLOCKS OF 16 BIT DATA. C 255=[111111] 256 =[1000000].AND. THIS WITH VALUE OF BLK0(57) C THIS SHOULD SEE IF BIT 8 IS SET C NBLKS=0 DO 16 JS=57,155 IF((BLK0(JS).AND.256).EQ.256) NBLKS=NBLKS +1 16 CONTINUE NPT=256*NBLKS C C MAKE SURE WE NEVER HAVE STRANGE NUMBERS OF POINTS IN SPECTRUM C TRACOR NORMALLY HAS 1024,2048 C IF (NPT.LE.1024) NPT=1024 IF (NPT.GT.4096) NPT=4096 C C WRITE OUT THE LABEL ON THE SCREEN FOR THE USER C WRITE (7,17) (BLK0(I), I=1,80),NPT,NBLKS 17 FORMAT(' Label:',/,80A2,/,I5 ' Data Points',I4,' NBLOCKS') c c debugging statement here c c DO 19 I=1,256 c WRITE (7,18) I, BLK0(I) c18 FORMAT (1X,I4,1X,I14) c19 CONTINUE C C - READ IN THE LOWER 16 BITS OF THE FILE C DO 20 J=2,NBLKS+1 20 READ(1'J,ERR=27) (IDATA(256*(J-2)+I),I=1,256) C C CONVERT TO FLOAT C DO 21 I=1,NPT XS(I)=IDATA(I) IF(XS(I).LT.0) XS(I)=XS(I)+65536. !TREAT AS UNSIGNED C C REMOVE COMMENTS BELOW TO SEE PROCESS IN ACTION C C WRITE (7,22) I,XS(I),IDATA(I) C22 FORMAT (1X,I4,1X,1F10.0,1X,I8) 21 CONTINUE C C NOW DO THE UPPER 8 BITS IN THE LAST BLOCKS (REMEMBER THESE ARE C STORED AS BYTES NOT WORDS C DO 25 J=NBLKS+2, NBLKS+2 + NBLKS/2 READ (1'J,ERR=27) (IBYTE(512*(J-NBLKS-2)+I), I=1,512) 25 CONTINUE 27 CONTINUE 26 CLOSE(UNIT=1) C C ADD THE UPPER 8 BITS TO LOWER 16 & CONVERT TO FLOATING POINT C DO 50 I=1,NPT XS(I)=XS(I)+65536.*IBYTE(I) ! ADD HIGH 8 BITS C C REMOVE COMMENTS BELOW TO SEE PROCESS IN ACTION C WRITE (7,100) I,XS(I),IBYTE(I) C100 FORMAT(1X,I4,1X,1F10.0,1X,I4) 50 continue C C CALCULATE AND STORE CALIBRATION PARAMETERS THAT ARE AVAILABLE C C IF (BLK0(34).NE.0) GO TO 60 ! CHECK FOR SPECIAL CALIBRATIONS C C WE HAVE A SPECIAL CALIBRATION C IGROUP=BLK0(158) !CALIBRATION WORD IBCP=2**(IGROUP.AND.3)!COMPRESSION IDZS=IGROUP/4 !DIGITAL ZERO SHIFT XS(NPT+1)=IDZS*.010 !LOW ENERGY XS(NPT+2)=IBCP !EV/CHANNEL XS(NPT+6)=BLK0(157)*1000 !LIVE TIME in msec C C ALL DONE C RETURN END C--------------------------------------------------------------------------- SUBROUTINE LSEDS (XS,NPT,FN) C-------------------------------------------------------------------------- C C C SUBROUTINE TO READ IN A LINK SYSTEMS EDS/ELS DATA FILE C AND STORE IT IN TO AN ARRAY XS C SUBROUTINE TO READ AN ASCII DATA FILE IN EMMPDL DATA FORMAT C INTO A REAL ARRAY XS OF DIMENSION XS(NPT+14) FROM A FILE "FN" C C NPT= NUMBER OF DATA POINTS IN THE SPECTRUM C C FN = ASCII FILE NAME OF THE SPECTRAL DATA FILE C C XS(1)-XS(NPT)=SPECTRAL DATA C C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (MR) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (MR) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C C C MAXIMUM NUMBER OF DATA POINTS IN SPECTRUM = 4096 C MAXIMUM ARRAY SIZE 4110 C C NOTE DATA MUST BE IN LINK PC FORMAT, I.E. USING C LINK SUPPLIED CONVERSION PROGRAM THE LINK DATA FILES C ARE TRANSFERED TO A PC AND THEN CAN BE READ BY THIS ROUTINE C C C SPECTRAL DATA IS 16 OR 32 BITS DEEP C C BLOCK 0 = HEADER C WORD 0 = SPECTRUM TYPE C =1 XEDS C =2 EELS C =3 AUGER C WORD 1 = NUMBER OF WORDS IN HEADER (256) C WORD 2 = DEFINITION OF CHANNEL CONTENTS C = 0 = UNSIGNED DATA C = 1 = SIGNED DATA & CHANNEL CAPACITY C LSB = 420 OCTAL= CAPACITY +/ 32K C = 20 OCTAL = CAPACITY +/ 64K C = 440 OCTAL= CAPACITY +/ 2G C WORD 3 = FIRST CHANNEL NUMBER STORED C WORD 4 = LAST CHANNEL NUMBER STORED C WORD 5-6 = UNITS OF HORIZONTAL AXIS C WORD 7-8 = GAIN FACTOR = GF C WORD 9 -10 = ZERO UNIT CHANNEL NUMBER = XO C WORD 11-27 = LABEL 32 CHARACTERS @=END OF LABEL C WORD 28 = MEMORY STATE C WORD 29 = SCALING COEFFICIENT 1 C WORD 30 = SCALING COEFFICIENT 2 C IF SC#1 =0 NO SCALING C IF SC#1 > 0 THEN C VALUE OF DATA = VALUESTORED*SC#1/SC#2 C WORD 31 = QUADRATIC X-AXIS CALIBRATION C XVALUE= [I(1+QF*I) - XO]/GF C C WORD 36 = LIVE TIME C WORD 37 = REAL TIME C------------------------------------------------------------------------- C C CODE: C DIMENSION XS(4110) INTEGER*2 BLK0(256),IDATA(4096) LOGICAL*1 FN(15),IBYTE(8192) EQUIVALENCE (IBYTE,IDATA) C C BEGIN BY ZEROING THE DATA ARRAY C DO 10 I=1,4110 10 XS(I)=0. C C C OPEN LINK FILE C OPEN (UNIT=1,NAME=FN,ACCESS='SEQUENTIAL',FORM='UNFORMATTED', C RECORDTYPE='VARIABLE',TYPE='OLD', DISPOSE='KEEP') C C TELL USER WE ARE READING FILE C WRITE (7,15) (FN(j), j=1,14) 15 FORMAT(/, ' Opening LINK Data file: ',14A1,//, c ' ----- Reading Data From Disk -----') C C - READ HEADER BLOCK 1 C READ (1,ERR=170) (BLK0(I),I=1,256) 170 CONTINUE C WRITE (7,116) GF,XO C116 FORMAT (' GF,XO ',2F10.3) C WRITE (7,117) (I,BLK0(I), I=1,256) C117 FORMAT (1X,I4,I10) C C CALCULATE NUMBER OF POINTS IN SPECTRUM C NPT=BLK0(5)-BLK0(4) + 1 C OFFSET=XO/GF C EVCH=1./GF ALTIME=BLK0(36) CTIME=BLK0(37) C C WRITE OUT SPECTRUM LABEL C WRITE (7,17) (BLK0(I), I=11,29),NPT 17 FORMAT(' Label:',/,19A2,/,I5 ' Data Points') C C CONVERT HEADER VALUES TO PARAMETERS WE NEED C c c debugging statement here c C DO 19 I=1,256 C WRITE (7,18) I, BLK0(I) C18 FORMAT (1X,I4,1X,I14) C19 CONTINUE C C - READ LINK DATA ONE 256 BLOCK AT A TIME C DO 20 J=1,NPT/256 READ(1,ERR=27) BLK0 27 CONTINUE DO 201 I=1,255 201 IDATA(255*(J-1)+I) = BLK0(I) 20 CONTINUE C C CONVERT TO FLOAT C DO 21 I=1,NPT XS(I)=IDATA(I) IF(XS(I).LT.0) XS(I)=XS(I)+65536. !TREAT AS UNSIGNED C C REMOVE COMMENTS BELOW TO SEE PROCESS IN ACTION C C WRITE (7,22) I,XS(I),IDATA(I) C22 FORMAT (1X,I4,1X,1F10.0,1X,I8) 21 CONTINUE 26 CLOSE(UNIT=1) C C STORE CALIBRATION PARAMETERS THAT ARE AVAILABLE C C XS(NPT+1) TO XS(NPT+14) =CALIBRATION CONSTANTS OF SPECTRAL DATA C NPT+1= OFFSET ENERGY OF FIRST CHANNEL C NPT+2= EV/CHANNEL C NPT+3= ACCELERATING VOLTAGE (KV) C NPT+4= INCIDENT BEAM DIVERGENCE (MR) FOR EELS DATA C = X-AXIS (ROD AXIS) TILT (MR) FOR XEDS DATA C NPT+5= SCATTERING ANGLE (MR) C = Y-AXIS (CUP AXIS) TILT (MR) FOR XEDS DATA C NPT+6= LIVE TIME (DWELL MSEC) FOR EELS OR C SIMPLE LIVE TIME FOR XEDS DATA C NPT+7= DEAD TIME (MSEC) C NPT+8= INCIDENT BEAM CURRENT IN nA C NPT+9= PROBE DIAMETER IN nm C NPT+10= SPECIMEN THICKNESS ALONG BEAM DIRECTION IN nm. C NPT+11-NPT+14 RESERVED FOR FUTURE USAGE C XS(NPT+1)=OFFSET XS(NPT+2)=EVCH XS(NPT+6)=ALTIME XS(NPT+7)=CTIME-ALTIME C C ALL DONE C RETURN END