DECLARE SUB WAIT.KEY () DECLARE SUB FILE.NAMES. (DRIVE.NAME$, PATH.NAME$, ORG.FIL$, EXTD.NAME$) 'save "C:\APD\lis-re4.bas",a 'Automatic File Converter ' Philips APD1700 .LIS FILE ==> ASCII in MS-DOS ' The translated file of Philips X-ray ASCII file should be copied on IBM-DOS ' through your Terminal Software. ' original by Ryosuke 88/Summer vacation ' refined by Tsu.Chie 89/09/12 The effect of Auto Divergence slit ' improved by Ryosuke 90/01/25 File Name Change ' improved by Ryosuke 93/11/19 Modifid Output File Structure ' Translated by Ryosuke for Quick Basic 95/07/17. ' '******** Main ************ DEFINT I, K DIM B$(500) REM file$ 3,2048 'OPENNING.MESSAGES CLS COLOR 7 PRINT " Automatic File Generator for the Graphic Softwares" PRINT COLOR 10 PRINT " RD RieTan Ver.5.0" COLOR 6 PRINT " Produced by Ryosuke O. Suzuki and Hiroyasu Tsuchida" PRINT COLOR 7 PRINT " 1993.Nov. Ver.4.1 NEC PC9801/N88 Basic" PRINT " 1995.July Ver.5.0 IBM-DOS/Quick Basic" PRINT : PRINT : COLOR 2 PRINT " Philips APD X-ray system ===> MS-DOS system" PRINT : COLOR 7 PRINT "This converter changes the .LIS file which stored originally as RD file and" PRINT "typed out as ASCII data, to the ASCII Data-File on MS-DOS." PRINT PRINT "1. This can compensate the effect of auto divergence slit." PRINT "2. You should transfer the LIS file onto MS-DOS system in advance." PRINT "3. This generates the IN3 File for RIETVELT Analysis." PRINT : PRINT : COLOR 4 CALL WAIT.KEY CLS 'Initiallization CR$ = CHR$(13) LF$ = CHR$(10) K = 0 I.STEP = 0 IC = 1 NTOTAL = 0 US$ = " ########" US2$ = "####.### " 'File Open Misc. Files PRINT "From which file shall we read the measured RD data?" PRINT PRINT "What is your .LIS File Name?" PRINT : COLOR 7 'Set File Name 1234 CALL FILE.NAMES.(DRIVE.NAME$, PATH.NAME$, ORG.FIL$, EXTD.NAME$) IF ORG.FIL$ = "" THEN PRINT : PRINT : FILES DRIVE.NAME$ + PATH.NAME$: PRINT : GOTO 1234 'Open the File INP.FILE$ = DRIVE.NAME$ + PATH.NAME$ + ORG.FIL$ + "." + EXTD.NAME$ OPEN INP.FILE$ FOR INPUT AS #1 OPEN DRIVE.NAME$ + PATH.NAME$ + ORG.FIL$ + ".IN3" FOR OUTPUT AS #2 OPEN DRIVE.NAME$ + PATH.NAME$ + "theta.dat" FOR OUTPUT AS #3 'Interupt of Headers I.STEP = 0 650 IF I.STEP <> 5 THEN LINE INPUT #1, a$ IF a$ = CHR$(10) THEN GOTO 650 'Find a step Size IF I.STEP <> 3 THEN IF MID$(a$, 1, 4) = "Step" THEN STEPA$ = MID$(a$, 28, 5) I.STEP = 3 AA$ = a$ END IF END IF 'Find a line with bars and compact them IF MID$(a$, 1, 2) = "--" THEN I.STEP = I.STEP + 1 AA$ = STRING$(50, "-") END IF IF I.STEP = 4 THEN I.STEP = 5 'Find the Null IF LEN(a$) <> 0 THEN ISPE = 0 FOR I = 1 TO LEN(a$) IF MID$(a$, I, 1) <> " " THEN ISPE = I IF I = LEN(a$) THEN a$ = " ": ISPE = 2 EXIT FOR END IF NEXT I AA$ = RIGHT$(a$, LEN(a$) - ISPE + 1) ELSE AA$ = "" END IF 'Convert the comment line of FORTRAN IF LEFT$(AA$, 1) = CHR$(10) THEN AA$ = RIGHT$(AA$, LEN(AA$) - 1): ' Line of "Analysis ..." END IF IF LEFT$(AA$, 1) = CHR$(10) THEN AA$ = RIGHT$(AA$, LEN(AA$) - 1): ' Line of "RAW DATA ...." END IF a$ = "* " + AA$ FOR ia = 1 TO LEN(a$) - 1 IF RIGHT$(a$, 1) = " " THEN a$ = LEFT$(a$, LEN(a$) - 1) NEXT ia IF LEN(a$) > 79 THEN a$ = LEFT$(a$, 78) PRINT #2, a$ PRINT a$ ELSE GOTO 660 END IF GOTO 650 660 CLOSE #2 'Handling of Intensity 930 INPUT #1, mindeg 940 HAJIME = 1 950 IF EOF(1) THEN 1210 960 LINE INPUT #1, a$ 970 ' 980 K = 0: IKK = 0 990 FOR I = 1 TO LEN(a$) 1000 AA$ = MID$(a$, I, 1): AAA = ASC(AA$) IF AAA = 10 THEN 1060: ' Line Feed == Special for IBM-DOS 1010 IF AAA = 32 AND K = 0 THEN IKK = 0: GOTO 1060: 'Space at the first 1020 IF AAA = 32 AND IKK = 0 THEN IKK = 0: GOTO 1060: 'Continuous spaces 1030 IF AAA = 32 AND IKK = 1 THEN IKK = 0: GOTO 1060: 'Register of Numeric 1040 IF AAA <> 32 AND IKK = 1 THEN IKK = 1: B$(K) = B$(K) + AA$: GOTO 1060: 'Add the numeric 1050 IF AAA <> 32 AND IKK = 0 THEN IKK = 1: K = K + 1: B$(K) = AA$: 'Start of Numeric 1060 NEXT I 1070 FOR KK = HAJIME TO K 1080 a = VAL(B$(KK)) 1090 IF a = 0 THEN 1140 1100 PRINT USING US$; a; 1110 PRINT #3, a; ","; 1120 NTOTAL = NTOTAL + 1 1130 IC = 1 1140 NEXT KK 1150 IF IC = 0 THEN 1180 PRINT PRINT #3, 1180 IC = 0: HAJIME = 2 1190 GOTO 950 1200 ' 1210 CLOSE #1: CLOSE #3 'Parameter for RIETAN No.3 File PRINT : COLOR 10 HABA.S = VAL(STEPA$) PRINT "Step size, step = "; HABA.S: PRINT PRINT "Minimum 2 theta, thinit="; mindeg: PRINT PRINT "Data Points, ntotal="; NTOTAL: PRINT : COLOR 7 1320 PRINT "Do you want to convert the measured intensity to the intensity" PRINT " which would be measured without the Auto Divergence Slit?" PRINT : COLOR 6 PRINT " 1. No, As it is." PRINT " 2. Yes, Convert!": COLOR 7: PRINT INPUT " Which do you select "; CONV.YN% IF CONV.YN% < 0 OR CONV.YN% > 3 THEN 1320 'Create of RIETAN No.3 File STEP.COUNTER = 0: IF CONV.YN% = 1 THEN 1490 REAL.DEG = mindeg / 2: PAI = 3.14159: REAL.RAD = REAL.DEG / 180 * PAI: 1490 OPEN DRIVE.NAME$ + PATH.NAME$ + ORG.FIL$ + ".IN3" FOR APPEND AS #1 PRINT #1, NTOTAL, mindeg, HABA.S PRINT NTOTAL, mindeg, HABA.S 1520 OPEN DRIVE.NAME$ + PATH.NAME$ + "theta.dat" FOR INPUT AS #2 1530 IF EOF(2) THEN 1810 1540 INPUT #2, a$: a = VAL(a$) 1550 IF CONV.YN% = 1 THEN 1560 ELSE 1660 1560 IF a = 0 THEN 1640 REAL.INTENSITY = a REAL.DEG = mindeg + HABA.S * STEP.COUNTER STEP.COUNTER = STEP.COUNTER + 1: PRINT USING US2$; REAL.DEG; PRINT #1, USING US2$; REAL.DEG; PRINT USING US$; REAL.INTENSITY PRINT #1, USING US$; REAL.INTENSITY 1640 GOTO 1530 1660 IF CONV.YN% = 2 THEN 1670 ELSE 1810 1670 REAL.INTENSITY = a / SIN(REAL.RAD) / 10 IF a = 0 THEN 1780 REAL.DEG = mindeg / 2 + HABA.S / 2 * STEP.COUNTER: REAL.RAD = REAL.DEG / 180 * PAI: STEP.COUNTER = STEP.COUNTER + 1: PRINT USING US$; REAL.INTENSITY; PRINT #1, USING US$; REAL.INTENSITY; 1740 GOTO 1530 1750 REAL.DEG = mindeg / 2 + HABA.S / 2 * STEP.COUNTER: 1760 REAL.RAD = REAL.DEG / 180 * PAI: 1770 STEP.COUNTER = STEP.COUNTER + 1: 1780 PRINT CR$ + LF$; 1790 PRINT #1, CR$ + LF$; 1800 GOTO 1530 1810 CLOSE KILL DRIVE.NAME$ + PATH.NAME$ + "theta.dat" CLOSE 'File Name for Output 3100 CLS : COLOR 6: LOCATE 5, 25 PRINT "Completed !!" PRINT : COLOR 7 PRINT : PRINT : PRINT COLOR 7: PRINT "Your converted file is now saved under the name of"; PRINT : COLOR 4 PRINT " "; DRIVE.NAME$ + PATH.NAME$ + ORG.FIL$ + ".IN3 " COLOR 5: PRINT PRINT : PRINT " All procedures are successfully finished !!" CALL WAIT.KEY CLS END ' 'For NEC PC9801 MS-DOS, CR$=CHR$(13)+CHR$(10) 'For IBM-DOS and MS-DOS, CR$=CHR$(10) SUB FILE.NAMES. (DRIVE.NAME$, PATH.NAME$, ORG.FIL$, EXTD.NAME$) PRINT : PRINT : COLOR 7 PRINT " You may use the drive name or the directory name." ' PRINT " In case of RETURN, then show the file list." PRINT : PRINT : BEEP INPUT " File.Name = "; FIL$ AAA$ = FIL$ ' Separate the drive Name From the key-in Name ISPE = 0 FOR I = 1 TO LEN(AAA$) IF MID$(AAA$, I, 1) = ":" THEN ISPE = I END IF NEXT I DRIVE.NAME$ = "" IF ISPE <> 0 THEN DRIVE.NAME$ = LEFT$(AAA$, ISPE) AAA$ = RIGHT$(AAA$, LEN(AAA$) - ISPE) END IF ' Separate the Directory Name From the key-in Name ISPE = 0 FOR I = 1 TO LEN(AAA$) IF MID$(AAA$, I, 1) = "\" THEN ISPE = I END IF NEXT I IF ISPE = 0 THEN PATH.NAME$ = "" ELSE PATH.NAME$ = LEFT$(AAA$, ISPE) AAA$ = RIGHT$(AAA$, LEN(AAA$) - ISPE) END IF ' Separate the Extension Name From the key-in Name ISPE = 0 FOR I = 1 TO LEN(AAA$) IF MID$(AAA$, I, 1) = "." THEN ISPE = I END IF NEXT I EXTD.NAME$ = "" IF ISPE <> 0 THEN EXTD.NAME$ = RIGHT$(AAA$, LEN(AAA$) - ISPE) AAA$ = LEFT$(AAA$, ISPE - 1) END IF IF LEN(AAA$) > 8 THEN AAA$ = LEFT$(AAA$, 8) ORG.FIL$ = AAA$ 'PRINT "Drive Name = "; DRIVE.NAME$: 'Output FILES 'PRINT "Directory = "; PATH.NAME$ 'PRINT "Extension = "; EXTD.NAME$ 'PRINT "File Name = "; ORG.FIL$ 'PRINT FIL$ 'STOP 'END END SUB SUB OK PRINT " (Y/N) "; 580 INPUT OKK$ IF OKK$ = "Y" OR OKK$ = "y" THEN OKK$ = "Y": GOTO 610 IF OKK$ = "N" OR OKK$ = "n" THEN OKK$ = "N": GOTO 610 ELSE 580 610 ' END SUB SUB WAIT.KEY 3410 LOCATE 23, 20 COLOR 3 PRINT "Push Any Key!! " a$ = INKEY$: IF a$ = "" THEN 3410 COLOR 7 END SUB