* 10/08/2001 - BTS - PROGRAM TO IMPORT ASCII FILE DECLARE SUBROUTINE MSG, VIDEO.RW SOURCE.FILE.NAME = "C:\ASCII\TEST.DAT" ;* SOURCE ASCII FILE TARGET.FILE.NAME = "ASCII" ;* TARGET AREV FILE DELIMITER = CHAR(13):CHAR(10) ;* SOURCE FILE RECORD DELIMITER SAVE.FRAME = "" OFFSET = 0 EOF = 0 RECORD.COUNT = 0 FRAME.SIZE = 1024 OSOPEN SOURCE.FILE.NAME TO SOURCE.FILE ELSE MSG('File ':SOURCE.FILE.NAME:' is not found.','','','') STOP END OPEN TARGET.FILE.NAME TO TARGET.FILE ELSE MSG('File ':TARGET.FILE.NAME:' is not found.','','','') STOP END * save screen image and clear screen * VIDEO.RW(0,0,@CRTWIDE-1, @CRTHIGH-1, 'R', IMAGE) * VIDEO.RW(0,0,@CRTWIDE-1, @CRTHIGH-1, 'C', '') * put up a message, then leave it up as a process is accomplished IMAGE2 = '' ; * initialize a variable to hold the screen image MSG('Importing file ':SOURCE.FILE.NAME, 'UB', IMAGE2, '') LOOP OSBREAD FRAME FROM SOURCE.FILE AT OFFSET LENGTH FRAME.SIZE IF LEN(FRAME) < FRAME.SIZE THEN EOF = 1 END FRAME = SAVE.FRAME:FRAME SAVE.FRAME = "" * FRAME IS COMPLETELY SET AT THIS POINT SWAP DELIMITER WITH @FM IN FRAME NUMBER.OF.RECORDS = COUNT(FRAME,@FM) IF NUMBER.OF.RECORDS < 2 AND EOF = 0 THEN * Less than 2 records in this frame SAVE.FRAME = FRAME END ELSE FOR X = 1 TO NUMBER.OF.RECORDS RECORD = FIELD(FRAME,@FM,X) GOSUB UPDATE.RECORD NEXT X X = NUMBER.OF.RECORDS + 1 SAVE.FRAME = FIELD(FRAME,@FM,X) OFFSET+=FRAME.SIZE END IF EOF THEN RECORD = SAVE.FRAME GOSUB UPDATE.RECORD PRINT CHAR(7) * now take down first message & restore screen image MSG( '', 'DB', IMAGE2, '') MSG(RECORD.COUNT:' records imported','','','') * restore screen image * VIDEO.RW(0,0,@CRTWIDE-1, @CRTHIGH-1, 'W', IMAGE) STOP END REPEAT UPDATE.RECORD: * THE VARIABLE "RECORD" IS SET WITH 1 RECORD OF THE RAW DATA * BREAK OUT THE FIELDS IN THE RECORD HERE * FLAT FILE METHOD TARGET.KEY = ICONV(RECORD[1,5],"MD0") ;* INTEGER OR DECIMAL TARGET.RECORD = TRIM(RECORD[6,25]) ;* CHARACTER OR TEXT TARGET.RECORD:= @FM:ICONV(RECORD[31,8],"D2/") ;* DATE * VARIABLE LENGTH FILE METHOD * SWAP "," WITH @FM IN RECORD * TARGET.KEY = RECORD<1> * TARGET.RECORD = DELETE(RECORD,1,0,0) WRITE TARGET.RECORD TO TARGET.FILE, TARGET.KEY RECORD = "" RECORD.COUNT += 1 RETURN END