| IDENTIFICATION DIVISION.
PROGRAM-ID. CONV_FCC_TO_FF.
AUTHOR. BOB BIBEAULT.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
SYMBOLIC CHARACTERS FF IS 013.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OPTIONAL FOCUS_TMP ASSIGN TO 'FOCUS$TMP'
ORGANIZATION SEQUENTIAL
ACCESS IS SEQUENTIAL
FILE STATUS IS FOCUS_TMP_STATUS.
SELECT FOCUS_RPT ASSIGN TO 'FOCUS$RPT'
ORGANIZATION SEQUENTIAL
ACCESS IS SEQUENTIAL
FILE STATUS IS FOCUS_RPT_STATUS.
DATA DIVISION.
FILE SECTION.
FD FOCUS_TMP
RECORD VARYING FROM 1 TO 133 CHARACTERS
DEPENDING ON FOCUS_TMP_LENGTH.
01 FOCUS_TMP_RECORD PIC X(133).
FD FOCUS_RPT
RECORD VARYING FROM 1 TO 132 CHARACTERS
DEPENDING ON FOCUS_RPT_LENGTH.
01 FOCUS_RPT_RECORD PIC X(132).
WORKING-STORAGE SECTION.
01 FILE_STATUS_ETC.
03 FOCUS_TMP_STATUS PIC X(2).
03 FOCUS_RPT_STATUS PIC X(2).
03 FOCUS_TMP_LENGTH PIC 9(3) COMP.
03 FOCUS_RPT_LENGTH PIC 9(3) COMP.
01 FILE_RECORD_AREA.
03 FOCUS_TMP_AREA.
05 FCC_BYTE PIC X(1).
05 TEXT_AREA PIC X(132).
03 FOCUS_RPT_AREA.
05 TEXT_AREA PIC X(132).
01 LOGICAL_SWITCHES.
03 DONE_SW PIC X.
88 DONE VALUE 'Y'.
01 MISC.
03 PAGE_MARKER.
05 FORMFEED PIC X VALUE FF.
05 FILLER PIC X(5) VALUE "$Page".
01 ACCUMULATORS COMP.
05 N_READ PIC S9(9).
05 N_WRITTEN PIC S9(9).
05 N_FF PIC S9(9).
05 N_BLOCKS PIC S9(9).
05 N_BYTES PIC S9(9).
01 DISPLAY_RESULTS.
03 SUMMARY_IO_LINE.
05 FILLER PIC X(5) VALUE 'Read:'.
05 SHOW_READ PIC ZZZZZZ,ZZ9B.
05 FILLER PIC X(8) VALUE 'Written:'.
05 SHOW_WRITTEN PIC ZZZZZZ,ZZ9B.
05 FILLER PIC X(6) VALUE 'Pages:'.
05 SHOW_PAGES PIC ZZZZZZ,ZZ9B.
05 FILLER PIC X(7) VALUE 'Blocks:'.
05 SHOW_BLOCKS PIC ZZZZZZ,ZZ9B.
01 SCR_PGM_VER_SHOTIME.
03 SCR_VERSION.
05 SCR_MODULE_ID PIC X(16) VALUE 'CONV_FCC_TO_FF'.
05 FILLER PIC X.
05 SCR_VERSION_ID PIC X(24) VALUE 'Version 88.08.04.22'.
PROCEDURE DIVISION.
AA0000-MAIN SECTION.
AA1000-BEGIN.
DISPLAY ' '
DISPLAY SCR_VERSION.
DISPLAY ' '.
AA1100-OPEN-IN.
OPEN INPUT FOCUS_TMP.
READ FOCUS_TMP INTO FOCUS_TMP_AREA
AT END DISPLAY 'File FOCUS$TMP Empty or Not Found'
MOVE 'Y' TO DONE_SW
GO TO AA9999-EXIT.
AA1200-OPEN-OUT.
OPEN OUTPUT FOCUS_RPT.
AA2000-REFORMAT.
PERFORM BB0000-PROCESS THRU BB9999-EXIT UNTIL DONE.
AA8000-CLOSE.
CLOSE FOCUS_RPT.
CLOSE FOCUS_TMP.
AA9000-SUMMARY.
MOVE N_READ TO SHOW_READ.
MOVE N_WRITTEN TO SHOW_WRITTEN.
DIVIDE N_BYTES BY 512 GIVING SHOW_BLOCKS ROUNDED.
IF N_FF > 0 THEN
ADD 1, N_FF GIVING SHOW_PAGES
END-IF.
DISPLAY ' '
DISPLAY SUMMARY_IO_LINE.
DISPLAY ' '.
AA9999-EXIT. STOP RUN.
BB0000-PROCESS SECTION.
BB1000-MOVE.
IF FCC_BYTE = '1' THEN
MOVE PAGE_MARKER TO FOCUS_RPT_AREA
MOVE 6 TO FOCUS_RPT_LENGTH
ADD 1 TO N_FF
ELSE
MOVE TEXT_AREA OF FOCUS_TMP_AREA TO TEXT_AREA OF FOCUS_RPT_AREA
SUBTRACT 1 FROM FOCUS_TMP_LENGTH GIVING FOCUS_RPT_LENGTH
END-IF.
IF FOCUS_RPT_LENGTH < 1 THEN
MOVE 1 TO FOCUS_RPT_LENGTH
END-IF.
ADD FOCUS_RPT_LENGTH TO N_BYTES.
BB8000-WRITE.
WRITE FOCUS_RPT_RECORD FROM FOCUS_RPT_AREA.
MOVE SPACES TO FOCUS_RPT_AREA.
ADD 1 TO N_WRITTEN.
BB9000-READ.
READ FOCUS_TMP INTO FOCUS_TMP_AREA AT END MOVE 'Y' TO DONE_SW.
ADD 1 TO N_READ.
BB9999-EXIT. EXIT.
|