Title :RWEMMDPL 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: RWEMMPDL contains two subroutines which read and write spectral data files (XEDS or EELS) in the EMMPDL Version 1.1 data format. The data are stored as simple ASCII characters at a user defined number of columns per line for the length of the data file. The spectral data is preceeded by a series of header lines, which tell the user about the parameters of the spectrum. The header lines are identified by the first character in the line being the symbol (#) followed by a four letter descriptor and if appropriate its units. An example of a data file format can be found in the RWEMMPDL.DOC file. Other examples spectra can be found in the XEDS and EELS subdirectories of the EMMPDL. ------------------------------------------------------------------------------- Title :RWEMMDPL 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, Documentation: The EMMPDL data format is a proposed spectral file format to allow the routine transfer of data between various microanalytical equipment data acquisition systems. It is also the data file format which is employed for the EELS Spectral Library initiated by the Electron Microscopy Center for Materials Research at Argonne National Lab. An example of the data file format is given below. The data are stored as simple ASCII characters at a user defined number of columns per line for the length of the data file. The spectral data is preceeded by a series of header lines, which tell the user about the parameters of the spectrum. The header lines are identified by the first character in the line being the symbol (#) followed by a four letter descriptor and if appropriate its units as defined below: 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) NAME SHOULD FOLLOW 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------------------------------------------------------------------- The example file is an EEL spectrum from Boron Nitride it consists of 1024 data points, stored as 5 values per line. The offset was -32.77 eV, recorded at 0.63 eV/channel at 100 kV, the incident beam divergence was 2 mR, while the scattering angle was 5.7 mR, the acquisition (live time) was 500 msec/channel. No dead time was reported, the incident beam current was 32 nA, probe size 100 nm, sample thickness 50 nm. The spectral data starts on the line following the header #SPECTRUM: and ends at the #ENDDATA : --------------EXAMPLE OF DATA FILE starts on the next line-------------------- #Title :BORON NITRIDE EELS SPECTRUM B KSHELL N KSHELL #Version : 1.1 #NPTS- : 1024.0 #NCOL- : 5.0 #OFFS-EV : -32.777 #EVCH- : 0.630 #VOLT-KV : 100.0 #ALPH-MR : 2.00 #BETA-MR : 5.70 #LTIM-MS : 500.0 #DTIM-MS : 0.0 #BCUR-NA : 32.0 #BDIA-NM : 100.0 #THCK-NM : 50.0 #SPECTRUM:Nestor J. Zaluzec Argonne National Lab EMCenter, Argonne IL. USA 90.0, 66.0, 105.0, 74.0, 92.0, 74.0, 89.0, 94.0, 104.0, 83.0, 94.0, 96.0, 77.0, 128.0, 112.0, 108.0, 125.0, 129.0, 129.0, 130.0, 160.0, 137.0, 149.0, 160.0, 212.0, 220.0, 228.0, 244.0, 290.0, 303.0, 377.0, 364.0, 454.0, 518.0, 641.0, 732.0, 901.0, 1174.0, 1333.0, 1779.0, 2170.0, 2826.0, 3709.0, 4858.0, 6828.0, 8596.0, 12492.0, 19601.0, 44866.0, 199766.0, 336877.0, 426639.0, 570817.0, 457113.0, 207936.0, 89892.0, 47675.0, 9166.0, 4526.0, 4508.0, 4934.0, 6716.0, 10174.0, 13937.0, 16479.0, 17206.0, 16964.0, 14882.0, 12497.0, 10120.0, 8116.0, 6662.0, 6720.0, 6979.0, 7694.0, 8005.0, 9639.0, 12395.0, 13381.0, 15685.0, 19621.0, 23252.0, 24518.0, 27754.0, 30933.0, 34790.0, 38256.0, 42962.0, 47361.0, 51718.0, 55587.0, 58227.0, 60021.0, 59261.0, 59831.0, 58400.0, 52716.0, 48517.0, 45281.0, 40138.0, 36503.0, 34846.0, 32527.0, 28814.0, 25298.0, 24189.0, 22620.0, 20934.0, 19934.0, 19337.0, 18832.0, 18632.0, 17836.0, 17509.0, 16445.0, 15943.0, 15151.0, 13867.0, 13746.0, 13003.0, 12451.0, 11799.0, 12047.0, 11984.0, 11995.0, 11864.0, 12069.0, 12583.0, 12367.0, 12572.0, 12827.0, 12941.0, 13023.0, 12789.0, 12768.0, 12571.0, 12398.0, 12274.0, 12300.0, 11844.0, 11450.0, 10929.0, 10476.0, 9942.0, 9725.0, 9059.0, 8783.0, 8666.0, 8383.0, 8103.0, 7728.0, 7716.0, 7652.0, 7292.0, 6886.0, 6875.0, 6695.0, 6194.0, 5892.0, 5702.0, 5553.0, 5394.0, 5282.0, 5107.0, 4979.0, 4858.0, 4741.0, 4472.0, 4401.0, 4368.0, 4289.0, 4278.0, 4110.0, 3963.0, 3973.0, 4046.0, 3793.0, 3603.0, 3499.0, 3502.0, 3295.0, 3143.0, 3106.0, 3118.0, 3093.0, 2947.0, 3020.0, 2929.0, 2753.0, 2860.0, 2816.0, 2549.0, 2552.0, 2465.0, 2426.0, 2378.0, 2398.0, 2426.0, 2274.0, 2165.0, 2089.0, 2075.0, 1894.0, 1965.0, 1870.0, 1832.0, 1722.0, 1709.0, 1615.0, 1639.0, 1599.0, 1501.0, 1540.0, 1516.0, 1437.0, 1438.0, 1495.0, 1376.0, 1404.0, 1320.0, 1340.0, 1322.0, 1250.0, 1149.0, 1241.0, 1146.0, 1246.0, 1097.0, 1096.0, 1108.0, 1190.0, 1134.0, 1130.0, 1160.0, 1139.0, 8581.0, 72193.0, 133941.0, 129511.0, 129234.0, 126232.0, 122700.0, 120292.0, 117211.0, 115884.0, 140274.0, 102789.0, 101989.0, 99092.0, 97702.0, 95200.0, 94479.0, 91304.0, 89214.0, 86722.0, 86002.0, 83104.0, 81607.0, 79643.0, 77728.0, 76123.0, 74295.0, 72655.0, 71737.0, 69047.0, 68512.0, 66756.0, 65265.0, 64334.0, 62817.0, 62745.0, 60584.0, 59986.0, 57694.0, 56273.0, 55514.0, 54879.0, 53340.0, 53252.0, 51682.0, 50834.0, 49339.0, 48856.0, 48111.0, 48021.0, 45628.0, 45258.0, 44779.0, 43428.0, 43564.0, 42496.0, 42047.0, 40821.0, 40420.0, 39950.0, 38364.0, 37927.0, 37347.0, 35616.0, 35602.0, 35051.0, 34593.0, 33886.0, 33043.0, 32501.0, 32507.0, 31340.0, 31073.0, 30159.0, 30272.0, 29484.0, 28707.0, 28475.0, 27789.0, 27145.0, 26975.0, 26397.0, 25475.0, 25509.0, 25019.0, 24708.0, 24365.0, 23983.0, 23619.0, 22893.0, 22655.0, 22286.0, 22165.0, 21435.0, 20827.0, 21241.0, 20420.0, 20100.0, 19852.0, 19744.0, 19091.0, 18856.0, 18834.0, 18472.0, 18060.0, 17606.0, 17697.0, 17722.0, 17158.0, 16961.0, 16658.0, 16643.0, 16583.0, 16224.0, 16429.0, 16408.0, 17491.0, 19561.0, 22437.0, 27476.0, 32108.0, 35658.0, 35949.0, 29542.0, 24509.0, 23351.0, 22386.0, 25432.0, 28937.0, 31860.0, 42406.0, 45775.0, 50278.0, 50652.0, 47554.0, 42570.0, 41353.0, 37307.0, 36587.0, 36119.0, 36620.0, 36913.0, 36906.0, 36253.0, 35914.0, 34661.0, 34157.0, 33309.0, 32065.0, 31150.0, 31387.0, 30611.0, 30522.0, 31691.0, 31886.0, 33569.0, 34452.0, 35451.0, 35692.0, 34870.0, 34007.0, 33020.0, 31403.0, 29557.0, 28506.0, 27493.0, 26764.0, 27014.0, 26319.0, 26488.0, 26915.0, 27150.0, 26925.0, 27422.0, 27585.0, 27350.0, 27368.0, 27563.0, 27401.0, 26871.0, 27072.0, 26961.0, 27125.0, 26815.0, 26677.0, 26967.0, 26655.0, 26337.0, 25714.0, 25441.0, 25495.0, 25143.0, 24740.0, 24829.0, 24468.0, 24764.0, 23974.0, 23691.0, 23651.0, 23309.0, 23566.0, 22784.0, 22188.0, 22068.0, 22009.0, 22036.0, 21339.0, 20720.0, 20692.0, 20586.0, 20780.0, 20376.0, 20274.0, 20293.0, 20000.0, 19830.0, 19283.0, 19590.0, 19513.0, 19324.0, 18897.0, 18822.0, 18723.0, 18390.0, 18506.0, 18790.0, 18447.0, 18087.0, 18022.0, 17715.0, 17998.0, 17647.0, 17376.0, 17736.0, 17204.0, 17267.0, 17337.0, 17006.0, 17140.0, 17151.0, 17210.0, 16840.0, 16654.0, 16706.0, 16603.0, 16817.0, 16189.0, 16065.0, 15939.0, 15153.0, 15803.0, 15180.0, 15341.0, 15110.0, 14754.0, 14716.0, 14657.0, 14381.0, 14112.0, 13868.0, 13908.0, 13731.0, 13607.0, 13590.0, 13728.0, 13424.0, 13604.0, 13365.0, 13592.0, 13141.0, 13329.0, 13374.0, 13159.0, 13125.0, 13236.0, 13136.0, 12696.0, 13009.0, 13175.0, 12928.0, 12843.0, 12893.0, 12829.0, 12774.0, 12923.0, 12598.0, 12574.0, 12481.0, 12265.0, 12366.0, 11947.0, 11943.0, 11899.0, 11868.0, 11913.0, 11835.0, 11811.0, 11443.0, 11464.0, 11384.0, 11052.0, 10945.0, 10958.0, 11026.0, 10632.0, 10608.0, 10538.0, 10567.0, 10497.0, 10404.0, 10548.0, 10018.0, 10055.0, 10181.0, 9926.0, 9911.0, 9808.0, 9738.0, 9569.0, 9579.0, 9457.0, 9443.0, 9413.0, 9378.0, 9376.0, 9135.0, 9233.0, 8935.0, 9059.0, 8960.0, 8784.0, 8831.0, 8435.0, 8599.0, 8634.0, 8484.0, 8312.0, 8404.0, 8413.0, 8339.0, 8389.0, 8317.0, 8062.0, 8025.0, 7843.0, 7895.0, 8071.0, 7838.0, 7930.0, 7818.0, 7567.0, 7740.0, 7467.0, 7485.0, 7445.0, 7468.0, 7214.0, 7372.0, 7086.0, 7104.0, 7144.0, 7067.0, 7243.0, 6849.0, 6955.0, 6922.0, 7063.0, 6850.0, 6986.0, 6769.0, 6419.0, 6650.0, 6495.0, 6607.0, 6376.0, 6477.0, 6206.0, 6428.0, 6319.0, 6403.0, 6318.0, 6379.0, 6195.0, 5978.0, 5950.0, 6013.0, 5986.0, 6056.0, 6002.0, 5811.0, 5619.0, 5945.0, 5837.0, 5789.0, 5707.0, 5739.0, 5651.0, 5620.0, 5582.0, 5456.0, 5603.0, 5572.0, 5740.0, 5402.0, 5403.0, 5302.0, 5404.0, 5354.0, 5296.0, 5338.0, 5303.0, 5176.0, 5212.0, 5149.0, 5108.0, 5096.0, 5143.0, 5110.0, 5153.0, 5035.0, 4832.0, 5015.0, 4973.0, 4885.0, 4849.0, 4784.0, 4758.0, 4852.0, 4722.0, 4566.0, 4822.0, 4742.0, 4632.0, 4766.0, 4520.0, 4617.0, 4544.0, 4437.0, 4538.0, 4689.0, 4660.0, 4400.0, 4378.0, 4342.0, 4336.0, 4430.0, 4532.0, 4522.0, 4753.0, 5195.0, 5735.0, 6361.0, 6969.0, 7364.0, 7655.0, 7617.0, 7664.0, 7619.0, 7600.0, 8054.0, 8147.0, 8554.0, 8938.0, 9407.0, 9140.0, 9104.0, 8828.0, 8398.0, 8171.0, 8167.0, 8026.0, 8402.0, 8329.0, 8893.0, 8867.0, 8968.0, 8850.0, 8825.0, 8295.0, 7863.0, 7934.0, 7317.0, 7069.0, 6748.0, 6762.0, 6184.0, 6319.0, 6355.0, 6430.0, 6613.0, 6671.0, 6831.0, 6699.0, 6930.0, 7137.0, 6891.0, 6910.0, 7155.0, 7023.0, 7000.0, 7160.0, 7127.0, 7268.0, 7431.0, 7207.0, 7476.0, 7530.0, 7401.0, 7368.0, 7518.0, 7684.0, 7705.0, 7543.0, 7363.0, 7573.0, 7629.0, 7325.0, 7419.0, 7488.0, 7250.0, 7098.0, 7123.0, 7112.0, 7086.0, 6739.0, 6736.0, 6589.0, 6529.0, 6639.0, 6454.0, 6322.0, 6371.0, 6407.0, 6398.0, 6556.0, 6403.0, 6214.0, 6187.0, 6347.0, 6209.0, 6247.0, 6284.0, 6137.0, 6356.0, 6142.0, 6240.0, 6109.0, 6267.0, 6282.0, 6025.0, 6156.0, 5950.0, 6262.0, 5979.0, 6096.0, 5750.0, 5906.0, 5968.0, 5800.0, 5911.0, 5935.0, 5803.0, 5854.0, 5706.0, 5787.0, 5498.0, 5716.0, 5611.0, 5622.0, 5689.0, 5565.0, 5605.0, 5457.0, 5580.0, 5436.0, 5515.0, 5410.0, 5473.0, 5720.0, 5313.0, 5526.0, 5560.0, 5444.0, 5312.0, 5329.0, 5305.0, 5088.0, 5036.0, 5223.0, 5128.0, 5094.0, 5167.0, 4998.0, 4934.0, 5193.0, 4804.0, 5099.0, 4867.0, 4925.0, 4899.0, 4737.0, 5030.0, 4847.0, 4950.0, 4772.0, 4681.0, 4782.0, 4715.0, 4914.0, 4702.0, 4546.0, 4573.0, 4640.0, 4736.0, 4617.0, 4764.0, 4687.0, 4659.0, 4861.0, 4569.0, 4560.0, 4558.0, 4561.0, 4487.0, 4587.0, 4560.0, 4377.0, 4495.0, 4347.0, 4471.0, 4348.0, 4387.0, 4499.0, 4249.0, 4323.0, 4184.0, 4231.0, 4244.0, 4262.0, 4280.0, 4163.0, 4171.0, 4174.0, 4044.0, 4035.0, 4070.0, 4208.0, 4053.0, 4074.0, 4092.0, 4141.0, 4009.0, 4038.0, 3883.0, 3904.0, 3972.0, 3780.0, 3874.0, 3905.0, 4003.0, 3810.0, 3738.0, 3769.0, 3850.0, 3774.0, 3712.0, 3870.0, 3869.0, 3798.0, 3754.0, 3872.0, 3653.0, 3652.0, 3698.0, 3704.0, 3656.0, 3831.0, 3710.0, 3592.0, 3457.0, 3597.0, 3836.0, 3620.0, 3628.0, 3486.0, 3579.0, 3561.0, 3474.0, 3526.0, 3656.0, 3380.0, 3558.0, 3478.0, 3270.0, 3475.0, 3470.0, 3602.0, 3349.0, 3448.0, 3403.0, 3348.0, 3317.0, 3316.0, 3411.0, 3356.0, 3371.0, 3402.0, 3213.0, 3317.0, 3285.0, 3349.0, 3280.0, 3142.0, 3189.0, 3351.0, 3169.0, 3335.0, 3042.0, 3259.0, 3148.0, 3097.0, 3122.0, 3098.0, 3033.0, 3201.0, 3173.0, 3057.0, 3268.0, 3087.0, 2954.0, 2980.0, 3038.0, 2876.0, 3077.0, 3041.0, 3029.0, 3072.0, 2912.0, 2929.0, 2991.0, 2898.0, 3117.0, 2944.0, 2811.0, 2964.0, 2995.0, 2884.0, 2931.0, 2881.0, 2898.0, 2932.0, 2759.0, 2789.0, 2708.0, 2722.0, 2753.0, 2710.0, 2859.0, 2751.0, 2771.0, 2721.0, 2777.0, 2881.0, 2768.0, 2713.0, 2870.0, 2853.0, 2699.0, 2807.0, 2763.0, 2741.0, 2754.0, 2648.0, 2870.0, 2931.0, 2700.0, 2756.0, 2661.0, 2716.0, 2699.0, 2619.0, 2666.0, 2658.0, 2588.0, 2606.0, 0.0, 0.0, 0.0, 0.0, #ENDDATA : Title :RWEMMDPL 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, Source Code: RWEMMPDL contains two subroutines which read and write spectral data files (XEDS or EELS) in the EMMPDL Version 1.1 data format. The data are stored as simple ASCII characters at a user defined number of columns per line for the length of the data file. The spectral data is preceeded by a series of header lines, which tell the user about the parameters of the spectrum. The header lines are identified by the first character in the line being the symbol (#) followed by a four letter descriptor and if appropriate its units. An example of the data file format can be found in the DOC file. Code: 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 (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 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(11) 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 WRITE(7,251) 251 FORMAT($,' Enter EMMPDL Data File Name [xxxxxx.xxx]: ') READ(5,252) (FN(J),J=1,10) 252 FORMAT(11A1) C C DATA FILE NAME MUST BE NULL TERMINATED C FN(11)=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,7) 1 FORMAT(1X,9A1,' at ',8A1,/,' Input Data File = ',7A2) 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,14 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 (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 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(11),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 WRITE(7,251) 251 FORMAT($,' Enter EMMPDL Data File Name [xxxxxx.xxx]: ') READ(5,252) (FN(J),J=1,10) 252 FORMAT(11A1) C C DATA FILE NAME MUST BE NULL TERMINATED C FN(11)=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,10) 1 FORMAT(1X,/' EMMPDL Data File Being Created',/, C9A1,' at ',8A1,/,' Output Data File Name = ',10A1) 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(11,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