DECLARE SUB WAIT.KEY () DECLARE SUB FILE.NAMES. (DRIVE.NAME$, PATH.NAME$, ORG.FIL$, EXTD.NAME$) 'save "C:\APD\UDF_UDR0.bas",a 'Automatic UDF-File Converter ' Philips PC-APD .UDF ASCII FILE ==> .UDR ASCII in MS-DOS ' The translated file of Philips X-ray .UDF file should be on IBM-DOS ' ' 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. ' modified by Ryosuke for PC-APD 96/10/24. Ver.6.0 ' '******** 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 " UDF_UDR Conv. Ver.6.00" 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 " 1995.July Ver.6.0 For PC-APD UDF files" PRINT : PRINT : COLOR 2 PRINT " Philips PC-APD X-ray system on MS-DOS system" PRINT : COLOR 7 PRINT "This converter changes the .UDF 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 convert the .RD file to the .UDF file by Utility in advance." PRINT "3. This generates the .UDR ASCII File for Users' Analysis." PRINT : PRINT : COLOR 4 CALL WAIT.KEY CLS 'Initiallization CR$ = CHR$(13) LF$ = CHR$(10) PAI = 3.14159: K = 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 .UDF 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 END IF IF EXTD.NAME$ = "" THEN EXTD.NAME$ = "UDF" END IF '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$ + ".UDR" FOR OUTPUT AS #2 650 IF EOF(1) = -1 THEN 660 LINE INPUT #1, a$ IF a$ = CHR$(10) THEN GOTO 650 b$ = "* " + a$ IF LEN(a$) > 2 THEN IF RIGHT$(a$, 2) = ",/" THEN a$ = LEFT$(a$, LEN(a$) - 2) END IF END IF 'Find a step Size IF LEN(a$) > 12 THEN IF MID$(a$, 1, 12) = "ScanStepSize" THEN Step.size = VAL(MID$(a$, 14, 8)) END IF END IF 'Find an AngleRange IF LEN(a$) > 14 THEN IF MID$(a$, 1, 14) = "DataAngleRange" THEN Startangle = VAL(MID$(a$, 16, 9)) Endangle = VAL(MID$(a$, 26, 9)) END IF END IF IF LEN(a$) >= 7 THEN IF LEFT$(a$, 7) = "RawScan" THEN COLOR 4: PRINT a$: COLOR 7 GOTO 660 END IF END IF 'Convert the comment line of FORTRAN PRINT #2, b$ PRINT b$ GOTO 650 660 ' 'Parameters PRINT : COLOR 10 PRINT "Step size, step = "; Step.size: PRINT PRINT "Minimum 2 theta, thinit="; Startangle: PRINT NTOTAL = (Endangle - Startangle) / Step.size + 1 PRINT "Data Points, ntotal="; NTOTAL: PRINT : COLOR 7 PRINT #2, "* "; NTOTAL, Startangle, Step.size 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. No conversion. 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 the main boby of .UDF File STEP.COUNTER = 0: WHILE EOF(1) <> -1 INPUT #1, a$ IF a$ = "/" THEN 2000 a = VAL(a$) IF CONV.YN% = 1 THEN REAL.INTENSITY = a REAL.DEG = Startangle + Step.size * STEP.COUNTER PRINT USING US2$; REAL.DEG; PRINT #2, USING US2$; REAL.DEG; PRINT USING US$; REAL.INTENSITY PRINT #2, USING US$; REAL.INTENSITY STEP.COUNTER = STEP.COUNTER + 1 ELSE REAL.DEG = Startangle + Step.size * STEP.COUNTER REAL.RAD = REAL.DEG / 180 * PAI: REAL.INTENSITY = a / SIN(REAL.RAD / 2) PRINT USING US2$; REAL.DEG; PRINT #2, USING US2$; REAL.DEG; PRINT USING US$; REAL.INTENSITY PRINT #2, USING US$; REAL.INTENSITY STEP.COUNTER = STEP.COUNTER + 1 END IF WEND 2000 CLOSE 'File Name for Output 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$ + ".UDR " COLOR 5: PRINT PRINT : PRINT " All procedures are successfully finished !!" CALL WAIT.KEY 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