!       UTFIXL.BAS - FIX a FILe that has lines longer than 510 characters
!
!       Copyright @1985 by David W. Barrow III
!
! Date          Who     L What
!--------       ---     - ---------------------------------------------------
!04-28-85       DWB       Original Coding
!

MAP1    VERSION,S,9,"VER042885"
PROGRAM UTFIXL,85.04A(28)

MAP1    MISC'STR'MAPS
       MAP2    CHAR,S,1,""             ! Test for control
       MAP2    CLEAN'LINE,S,80,""      ! out'line cleaned of CTRL-?
       MAP2    CONTINUE,S,1,"N"        ! ans to do you want
       MAP2    IN'FILESPEC,S,24,""     ! Input file specifcation
       MAP2    IN'LINE,S,10000,""      ! Input line
       MAP2    OUT'FILESPEC,S,24,""    ! Output file specification
       MAP2    OUT'LINE,S,80,""        ! Output line

MAP1    MISC'FP'MAPS
       MAP2    CHAR'NUM,F,6,0          ! Line character check loop
       MAP2    COUNTER,F,6,0           ! File line counter loop
       MAP2    COUNTER2,F,6,0          ! Line parcer loop counter
       MAP2    EXIST,F,6,0             ! Lookup answer
       MAP2    LINE'LEN,F,6,0          ! line length
       MAP2    NAME'LEN,F,6,0          ! Length of input file name

HOUSEKEEPING:
       ! Standard Error Routine
       ON ERROR GOTO ERR'ROUTINE

       PRINT TAB(-1,0)
       PRINT TAB(01,10); "UTFIXL - David W. Barrow III's LINE FIXER"
       PRINT TAB(03,05); "This program takes a file with lines longer";  &
               " than 510 characters "
       PRINT TAB(04,01); "and outputs a file with the same name.RFM "; &
               "which will have those"
       PRINT TAB(05,01); "lines divided into 80 character lines"
       PRINT TAB(06,05); "The process also cleans out the Control characters"


       PRINT TAB(08,10); "Are you SURE you want to run this program (Y/N) ";
       INPUT CONTINUE
               IF      ( CONTINUE # "Y" )      &
               THEN    GOTO QUIT

       PRINT TAB(10,10); "File to reformat (NNNNNN.NNN)";
       INPUT IN'FILESPEC
       NAME'LEN = INSTR(1,IN'FILESPEC,".")
       LOOKUP IN'FILESPEC, EXIST
               IF      ( EXIST = 0 )                                   &
               THEN    PRINT TAB(10,10); "That file does not exist"    &
                       : STOP                                          &
                       : GOTO HOUSEKEEPING
       OPEN #1, IN'FILESPEC, INPUT

       OUT'FILESPEC = LEFT$(IN'FILESPEC,NAME'LEN) + "RFM"
       OPEN #2, OUT'FILESPEC, OUTPUT

! MAINLINE:
       PRINT TAB(12,24); "The line# being processed is ";
       FOR COUNTER = 1 TO 10000
               PRINT TAB(12,55); COUNTER;
                       IF      ( EOF(1) # 0 )  &
                       THEN    COUNTER = 10000 &
                               : GOTO NEXT'IN'LINE
               INPUT LINE #1, IN'LINE
               LINE'LEN = LEN(IN'LINE)
                       FOR COUNTER2 = 1 TO LINE'LEN STEP 80
                               OUT'LINE = MID$(IN'LINE,COUNTER2,80)
                               CALL CONTROL'ERASE
                               PRINT #2, OUT'LINE
                       NEXT COUNTER2
NEXT'IN'LINE:
       NEXT COUNTER

EXIT:
       CLOSE #1
       CLOSE #2
       PRINT TAB(23,01); "The file has been reformatted"
QUIT:
       END

       !!!!!!!!!!!!!!!!!!!!!!!
       ! PROGRAM SUBROUTINES !
       !!!!!!!!!!!!!!!!!!!!!!!

CONTROL'ERASE:
       CLEAN'LINE = SPACE$(80)
       XCALL STRIP, CLEAN'LINE
       FOR CHAR'NUM = 1 TO 80
               CHAR = MID$(OUT'LINE,CHAR'NUM,1)
                       IF              ( ASC(CHAR) > 31 )      &
                               AND     ( ASC(CHAR) < 127 )     &
                       THEN            CLEAN'LINE = CLEAN'LINE + CHAR
       NEXT CHAR'NUM
       OUT'LINE = CLEAN'LINE
       RETURN

       !!!!!!!!!!!!!!!!!!!!!!!!
       ! STANDARD SUBROUTINES !
       !!!!!!!!!!!!!!!!!!!!!!!!

ERR'ROUTINE:
       ! Check for AlphaBASIC error
               IF      ( ERR(0) = 0 )  &
               THEN    GOTO ISAM'ERROR
       ! Display Basic error
       PRINT TAB(-1,0)                         ! Clear Screen
       PRINT TAB(12,15); "?? Fatal AlphaBASIC Error "; STR$(ERR(0))
               IF      ( ERR(1) )      &
               THEN    PRINT TAB(13,15); " at line "; STR$(ERR(1))
               IF      ( ERR(2) )      &
               THEN    PRINT TAB(14,15); " on Channel "; STR$(ERR(2))
       GOTO ERROR'ABORT

ISAM'ERROR:
!               IF      (

ERROR'ABORT:
       PRINT TAB(20,15); "!! Contact System Operator Immediately !!"
       PRINT TAB(21,01);
       END
!                       ******* END OF UTFIXL.BAS *******