! 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