! A program to convert a Contiguous (random) file to Sequential
! (Hash totals remain the same)
! Originally appeared in AMUS.LOG Vol 8 No 10 (Oct'85) pp 41+
! Modified by Brad Horine, Hytek Amplifier Inc, 28 Jan 87
!
PROGRAM RANSEQ, 1.0(105)
!
MAP1 RAND'RECORD,X,512
MAP1 SEQ'FILE$,S,10
MAP1 RAND'FILE$,S,30
MAP1 RAND'SIZE,F
MAP1 RAND'COLON,F !next 3 comments by TDF/AM
MAP1 RAND'DOT,F
MAP1 RAND'BRACK,F
MAP1 RAND'DELIM,F
MAP1 REC9991,F
MAP1 ERR'CODE,F
MAP1 ERROR'MSG(2),S,30
ERROR'MSG(1) = "Random file not found"
ERROR'MSG(2) = "File is not random"
!
PRINT TAB(-1,0); "Random to Sequential File Transfer Utility";
!
! Get Random Filename
!
PRINT TAB(3,1); "Name of RANDOM file: ";
INPUT LINE RAND'FILE$
!
! Create a filnam.SEQ in this PPN
!
x = x
RAND'COLON = INSTR(1, RAND'FILE$, ":")
RAND'DOT = INSTR(1, RAND'FILE$, ".")
RAND'BRACK = INSTR(1, RAND'FILE$, "[")
IF RAND'COLON = 0 AND RAND'DOT = 0 AND RAND'BRACK = 0 &
THEN SEQ'FILE$ = RAND'FILE$ + ".SEQ" :&
GOTO DAT'DEFAULT
IF RAND'DOT > 0 AND RAND'BRACK = 0 THEN RAND'DELIM = RAND'DOT
IF RAND'BRACK > 0 AND RAND'DOT = 0 THEN RAND'DELIM = RAND'BRACK
IF RAND'BRACK > 0 AND RAND'DOT > 0 THEN RAND'DELIM = &
RAND'DOT MIN RAND'BRACK
SEQ'FILE$ = RAND'FILE$[(1 MAX RAND'COLON),RAND'DELIM-1] + ".SEQ"
!
! Default to .DAT if no extension given
!
DAT'DEFAULT:
IF RAND'DOT <> 0 THEN GOTO LOOKUP'FILE
IF RAND'BRACK = 0 THEN RAND'FILE$ = RAND'FILE$ + ".DAT" &
ELSE RAND'FILE$ = RAND'FILE$[1;RAND'BRACK-1] + ".DAT" &
+ RAND'FILE$[RAND'BRACK,LEN(RAND'FILE$)]
!
LOOKUP'FILE:
LOOKUP RAND'FILE$, RAND'SIZE
IF RAND'SIZE = 0 THEN ERR'CODE = 1: GOTO ERROR'OUT
IF RAND'SIZE > 0 THEN ERR'CODE = 2: GOTO ERROR'OUT
RAND'SIZE = ABS(RAND'SIZE)
PRINT TAB(5,1); "Converting "; RAND'FILE$; " to Sequential";
OPEN #9991, RAND'FILE$, RANDOM, 512, REC9991
OPEN #9992, SEQ'FILE$, OUTPUT
!
PRINT TAB(7,1); "Dumping Record No.";
!
FOR REC9991 = 0 TO RAND'SIZE - 1
PRINT TAB(7,21); REC9991 USING "####";
READ #9991, RAND'RECORD
PRINT #9992, RAND'RECORD; !<-- note semicolon!!
NEXT REC9991
!
CLOSE #9991: CLOSE #9992
PRINT TAB(9,1); "Sequential file is finished, name is "; SEQ'FILE$
PRINT : END
!
ERROR'OUT:
PRINT CHR(7); "?"; ERROR'MSG(ERR'CODE)
END