$ ASK := READ/END_OF_FILE=EXIT SYS$COMMAND/PROMPT= $ SAY := WRITE SYS$OUTPUT $ LF[0,8] = 10 $ FF[0,8] = 12 $ CR[0,8] = 13 $ CVT_FILE = P1 $ CVT_ASK: $ IF CVT_FILE .EQS. "" $ THEN $ ASK "Enter input file name: " CVT_FILE $ GOTO CVT_ASK $ ENDIF $ CVT_SPEC = F$SEARCH (F$PARSE (CVT_FILE, ".MEM")) $ IF CVT_SPEC .EQS. "" $ THEN $ SAY "Error - File ", CVT_FILE, " not found." $ GOTO EXIT $ ENDIF $ CVT_SPEC = F$EXTRACT (0, F$LOCATE (";", CVT_SPEC), CVT_SPEC) $ OPEN/READ IN_FILE 'CVT_SPEC' $ COPY NLA0: 'CVT_SPEC' $ OPEN/APPEND OUT_FILE 'CVT_SPEC' $ LINE_NUM = 0 $ LINE_PREV = 0 $ COL_NUM = 0 $ COL_SPA = 66 $ COL_MAX = 132 $ READ_LOOP: $ READ/END_OF_FILE=FLUSH IN_FILE BUFFER $ BUFFER = BUFFER - CR - LF $ IF F$LOCATE (FF, BUFFER) .LT. F$LENGTH (BUFFER) .AND. BUFFER .NES. "" $ THEN $ LINE_NUM = 0 $ COL_NUM = COL_NUM + COL_SPA $ IF COL_NUM .GE. COL_MAX $ THEN $ CALL OUTPUT $ COL_NUM = 0 $ LINE_PREV = 0 $ ENDIF $ BUFFER = BUFFER - FF $ ENDIF $ LINE_NUM = LINE_NUM + 1 $ IF COL_NUM .GT. 0 $ THEN $ IF LINE_NUM .GT. LINE_PREV $ THEN $ OUT_BUF_'LINE_NUM' = " " $ LINE_PREV = LINE_NUM $ ENDIF $ OUT_BUF_'LINE_NUM' = - F$FAO ("!''COL_NUM'AS!AS", OUT_BUF_'LINE_NUM', BUFFER) $ ELSE $ OUT_BUF_'LINE_NUM' = BUFFER $ LINE_PREV = LINE_NUM $ ENDIF $ GOTO READ_LOOP $ FLUSH: $ CALL OUTPUT $ EXIT: $ CLOSE/NOLOG IN_FILE $ CLOSE/NOLOG OUT_FILE $ EXIT $ OUTPUT: $ SUBROUTINE $ IF LINE_PREV .GT. 0 THEN WRITE OUT_FILE FF $ LINE_INX = 0 $ OUT_LOOP: $ IF LINE_INX .LT. LINE_PREV $ THEN $ LINE_INX = LINE_INX + 1 $ WRITE OUT_FILE OUT_BUF_'LINE_INX' $ GOTO OUT_LOOP $ ENDIF $ ENDSUBROUTINE