REM ************************************************* REM ***************** TOWF.BAS ******************** REM ******** header --> watfile conversion ******** REM **** version 000.0004 aph 28-May-93 ***** REM ************************************************* DIM field$(50) DIM size(50) el = 80 CLS PRINT " *** DAT_TO_WF ***** May-93 ****": PRINT PRINT "Program to convert headers taken from core excitation database files" PRINT "into a single file readable by WATFILE": PRINT INPUT "Verbose transcription? (yes =1) ", verbose: PRINT INPUT "File with list of *.DAT file names: ", nf$ OPEN nf$ FOR INPUT AS #1 INPUT "Watfile output file: ", wf$ OPEN "t.wf" FOR OUTPUT AS #3 REM ------------ read first file to define Fields -------------- LINE INPUT #1, file$ file$ = RTRIM$(file$) IF file$ = "" GOTO 9999 OPEN file$ FOR INPUT AS #2 REM ------ loop to read all header lines ------ field$(1) = "in_file" size(1) = LEN(file$) sp$ = STRING$(el, " ") LSET sp$ = file$ y$ = y$ + sp$ PRINT file$ IF verbose = 1 THEN PRINT y$; "|" j = 2 10 LINE INPUT #2, line$ IF MID$(line$, 1, 1) <> "*" GOTO 50 i = INSTR(line$, ":") IF i = 0 THEN GOTO 40 field$(j) = MID$(line$, 3, i - 3) entry$ = MID$(line$, i + 2, LEN(line$)) entry$ = LTRIM$(RTRIM$(entry$)) size(j) = LEN(entry$) IF verbose = 1 THEN PRINT field$(j), " : "; entry$ sp$ = STRING$(el, " ") LSET sp$ = entry$ y$ = y$ + sp$ j = j + 1 40 GOTO 10 50 REM all header lines have been read from first file nfield = j - 1 CLOSE #2 PRINT #3, y$ IF verbose = 1 THEN INPUT "Continue ....", xyz$ REM ------ loop for multiple files -------- nfile = 2 DO WHILE NOT EOF(1) LINE INPUT #1, file$ file$ = RTRIM$(file$) IF LEN(file$) > size(1) THEN size(1) = LEN(file$) IF file$ = "" GOTO 9999 OPEN file$ FOR INPUT AS #2 REM ------ loop to read all header lines ------ y$ = "" sp$ = STRING$(el, " ") LSET sp$ = file$ y$ = y$ + sp$ PRINT file$ IF verbose = 1 THEN PRINT y$; "|" j = 2 70 LINE INPUT #2, line$ IF MID$(line$, 1, 1) <> "*" GOTO 90 i = INSTR(line$, ":") IF i = 0 THEN GOTO 80 field$ = MID$(line$, 3, i - 3) IF field$ <> field$(j) THEN PRINT " In "; file$; " field "; j; " is non-standard : "; field$ entry$ = MID$(line$, i + 2, LEN(line$)) entry$ = LTRIM$(RTRIM$(entry$)) IF LEN(entry$) > size(j) THEN size(j) = LEN(entry$) IF verbose = 1 THEN PRINT field$, " : "; entry$ sp$ = STRING$(el, " ") LSET sp$ = entry$ y$ = y$ + sp$ j = j + 1 80 GOTO 70 90 REM finished with file CLOSE (2) IF verbose = 1 THEN INPUT "Continue ....", xyz$ REM write accumulated entry information to temporary output file (t.wf) PRINT #3, y$ nfile = nfile + 1 LOOP 9999 REM read back info from temporary file and add define statements CLOSE (1) CLOSE (3) PRINT "Finished processing "; nfile; " files, each with "; nfield; " fields" REM IF verbose = 1 THEN FOR i = 1 TO nfield PRINT field$(i), size(i) NEXT i REM END IF OPEN "t.wf" FOR INPUT AS #3 OPEN wf$ FOR OUTPUT AS #4 PRINT #4, "%WATFILE/Plus V3.5 Saved 99/12/31 23:59:59" FOR i = 1 TO nfield PRINT #4, "define "; sp$ = STRING$(20, " ") LSET sp$ = field$(i) PRINT #4, sp$; PRINT #4, " = "; PRINT #4, USING "##"; size(i); PRINT #4, " L" NEXT i PRINT #4, "bye" DO UNTIL EOF(3) LINE INPUT #3, y$ IF y$ = "" GOTO 99 FOR i = 1 TO nfield a% = 1 + el * (i - 1) entry$ = MID$(y$, a%, el) sp$ = STRING$(size(i), " ") LSET sp$ = entry$ PRINT #4, sp$; NEXT i PRINT #4, LOOP 99 REM end of data CLOSE (3): CLOSE (4) PRINT PRINT "End of processing... "; END