       IDENTIFICATION DIVISION.
       PROGRAM-ID. NCTC02.
       REMARKS. THIS PROGRAM DOES ALL PASSES
                  COPYRIGHT, (C) HONEYWELL INFORMATION SYSTEMS INC,  1979.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. XEROX.
       OBJECT-COMPUTER. XEROX.
       SPECIAL-NAMES. '1' IS TOPP.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT SI ASSIGN TO DISC.
           SELECT CO ASSIGN TO DISC.
           SELECT VO ASSIGN TO DISC.
           SELECT SO ASSIGN TO DISC
               ACTUAL KEY IS LINE-KEY

               ACCESS IS RANDOM.
           SELECT LO ASSIGN TO DISC.
       DATA DIVISION.
       FILE SECTION.
       FD  SI  LABEL RECORD STANDARD.
       01  ORIGIN  PIC X(80).
       FD CO  LABEL RECORD STANDARD.
       01  COMPRESSOUTX.
           02 COMPRESSOUT PIC X(66).
           02 SAVE-SEQ PIC X(6).
       FD  VO
           LABEL RECORDS  STANDARD.
       01  VERBOUTX.
           02 VERBOUT PIC X(66).
           02 SEQ-OUT PIC X(6).
       FD  SO
           LABEL RECORDS STANDARD
           DATA RECORD SOURCE-OUT.
       01  SOURCE-OUT.
           02  BYTE72 PIC X OCCURS 72 TO 80
                   DEPENDING ON REC72.
       FD  LO
           LABEL RECORDS OMITTED
           DATA RECORD IS LO-REC.
       01  LO-REC.
           02  LO-ASA PIC X.
           02  LO-LINE PIC X(131).
       WORKING-STORAGE SECTION.
       77 COPYRIGHTX PIC X(60) VALUE
             'COPYRIGHT, (C) HONEYWELL INFORMATION SYSTEMS INC., 1979'.
       77  FIRST-WORD-SW PIC 9 VALUE 0.
       77  SAVE-THE-SEQ PIC X(6).
       77  TALLE COMP VALUE 0.
       77  COPY-SW PIC 9 VALUE 0.
       77  PROC-SW PIC 9 VALUE 0.
       77  SUB1 COMP VALUE 0.
       77  SUB2 COMP VALUE 0.
       77  SUB3 COMP VALUE 0.
       77  QUOTE-SW PIC 9 VALUE 0.
       77  SUB4 COMP VALUE 0.
       77  SUB5 COMP VALUE 0.
       77  BLD-SW PIC 9 VALUE 0.
       77  FIRST-VERB-SW PIC 9 VALUE 0.
       77  X  COMP VALUE 0.
       77  U COMP VALUE 0.
       77  Y  COMP VALUE 0.
       77  Z COMP VALUE 0.
       77  B COMP VALUE 0.
       77  A COMP VALUE 0.
       77  LB-PRINT-AREA COMP VALUE 0.
       77  LB-BUILD-AREA COMP VALUE 0.
       77  NAME1 PIC 99 VALUE 0.
       77  NAME2 PIC 99 VALUE 0.
       77  NAME3 PIC 99 VALUE 0.
       77  NAME4 PIC 99 VALUE 0.
       77  FRSTNAME PIC 99 VALUE 0.
       77  END-OF-REC PIC 99 VALUE 0.
       77  QUOTE1 PIC 9 VALUE 0.
       77  C COMP VALUE 0.
       77  FOUND PIC X VALUE SPACE.
       77  CO-SWITCH PIC X VALUE SPACE.
       77  EOL1  COMP   VALUE 0.
       77  EOL2  COMP   VALUE 0.
       77  DATA-DIV-SWITCH PIC 9 VALUE 0.
       77  SPECIAL-NAME-SWITCH PIC 9 VALUE 0.
       77  NO-COMP PIC X VALUE ' '.
       77  FD-SWITCH PIC 9 VALUE 0.
       77  BLNKS PIC X(66) VALUE SPACES.
       77  NOTE-SW PIC 9 VALUE 0.
       77  REMARKS-SW PIC 9 VALUE 0.
       77  FRST-ASTR PIC 9 VALUE 0.
       77  P1-SW   PIC 9 VALUE 0.
       77  FD-CPY-SW PIC 9 VALUE 0.
       77  FRST-CPY PIC 9 VALUE 0.
       77  FRST-VERB-SW PIC 9 VALUE 0.
       77  DISP-SW PIC 9 VALUE 0.
       77  DISP-P-SW PIC 9 VALUE 0.
       77  MOV2-SW PIC 9 VALUE 0.
       77  I-O-SW PIC 9 VALUE 0.
       77  CODE-SW PIC 9 VALUE 0.
       77  LINE-NO PIC 9(4) VALUE 1.
       77  PAGE-NO PIC 9(4) VALUE 0.
       77  D COMP VALUE 1.
       77  E  COMP VALUE 1.
       77  F COMP VALUE 1.
       77 ELSE-SW PIC 9 VALUE 0.
       77  G COMP VALUE 1.
       77  H COMP VALUE 0.
       77  I COMP VALUE 0.
       77  J COMP VALUE 0.
       77  K COMP VALUE 0.
       77  RANDOM-SWITCH PIC X VALUE SPACE.
       77  FOUND-FC PIC X VALUE SPACE.
       77  SAVE-FC-VERB-LENGTH PIC 99 VALUE 0.
       77  FOUND-DATA PIC X VALUE SPACE.
       77  PERIOD-FLAG PIC X VALUE SPACE.
       77  DATA-LINE-END-SWTCH PIC X VALUE SPACE.
       77  WRITE-SWITCH PIC X VALUE '0'.
       77  NO-SO PIC X VALUE '0'.
       77  XSPECIAL-NAME-SWITCH PIC X VALUE SPACE.
       77  TRANS-SWITCH PIC 9 VALUE 1.
       77  TRANS-END-SWITCH PIC 9 VALUE 0.
       77  TRANS-PERIOD-FLAG PIC 9 VALUE 0.
       77  DISP-PERIOD-FLAG PIC X VALUE SPACE.
       77  DISP-EOL-FLAG PIC X VALUE SPACE.
       77  SECT-SWITCH PIC X VALUE SPACE.
       77  SD-SWITCH PIC 9 VALUE 0.
       77  PARA-SWITCH1 PIC X VALUE '0'.
       77  PARA-SWITCH2 PIC X VALUE '0'.
       77  FST-READ PIC X VALUE '1'.
       77  DECLAR-SW PIC X VALUE '0'.
       77  REPORT-WRITE-SW PIC X VALUE '0'.
       77  V COMP VALUE 0.
       77  FD-END-LINE PIC 9 VALUE 0.
       77  START-IT COMP VALUE 0.
       77  STOP-IT COMP VALUE 0.
       77  FD-PERIOD-FLAG PIC X VALUE SPACE.
       77  S COMP VALUE 0.
       77  W COMP VALUE 0.
       77  CHRCNT COMP VALUE 0.
       77  USING-SW PIC 9 VALUE 0.
       77  EDMS-SW PIC 9 VALUE 0.
       77  EDMS-SW2  PIC 9 VALUE 0.
       77  SEQ-STORE PIC 9(6) VALUE 0.
       77  SET-SW COMP VALUE 0.
       77  CONTROL-SW COMP VALUE 0.
       77  COMM-DATA-2 PIC X(31) VALUE SPACES.
       77  COMM-SW-CHK PIC 9 VALUE 0.
       77  COMM-SW PIC 9 VALUE 0.
       77  SEQ-SAV PIC 9(6) VALUE 0.
       77  PX-SW PIC 9 VALUE 0.
       77  PUT-SYSOUT COMP VALUE 1.
       77  SEL-SW PIC 9 VALUE 0.
       77  ID-SW PIC 9 VALUE 0.
       77  R-SW PIC 9 VALUE 0.
       77  I-O-SWX PIC 9 VALUE 1.
       01  DUMY COMP VALUE 21.
       01  FILLER REDEFINES DUMY.
           02  FILLER PIC XXX.
           02  LINE-FEED PIC X.
       01  W1.
           02  RECV PIC X OCCURS 66.
       01  W2.
           02  SND PIC X OCCURS 66.
       01  W3.
           02  CHK PIC X OCCURS 31 TIMES.
       01  PRINT-STORAGE.
           02  PRINT-HOLD PIC X OCCURS 66 TIMES.
           02  SEQ-PRNT PIC X(6).
       01  IN-REC.
           02  COMPRESS-CK PIC X(6).
           02  IN-TEXT PIC X OCCURS 66 TIMES.
           02  IN-TEXT-RE REDEFINES IN-TEXT.
             03  FILLER PIC X.
             03  ELEVEN PIC X(11).
               03  SVN REDEFINES ELEVEN.
                   05  SEVEN PIC X(7).
                   05  FILLER PIC X(4).
             03  FILLER PIC X(54).
           02  IN-TEXT-4 REDEFINES IN-TEXT.
             03  FILLER PIC X.
             03  FOUR PIC X(4).
               03  FILLER REDEFINES FOUR.
                       05  THRE PIC XXX.
                       05  F4     PIC X.
             03  FILLER PIC X(61).
           02  SAVESEQ PIC X(8).
       01  TEXT-OUT.
           02  BUILD-TEXT PIC X OCCURS 66 TIMES.
       01  SCANNER-REC.
       01  SAVE-A-LINE.
           02  SAVE-LINE PIC X OCCURS 72 TIMES.
       01  REMARKS-SAVE-AREA.
           02  RSA              PIC X(66) OCCURS 15 TIMES.
           02 RSA-R REDEFINES RSA OCCURS 15 TIMES.
             03  RSA1  PIC X.
             03  RSA2  PIC X(65).
       01  SAVED-WORD.
           02  SAVE-WORD PIC X OCCURS 8 TIMES.
       01  FC-IO-WORD.
           02  FC-IO-SAVE PIC X OCCURS 12 TIMES.
       01  CI-IN.
           02  ASTER PIC X.
           02  IDENT PIC X(9).
           02  CI-X   PIC X(56).
           02  SEQ-OLD PIC X(8).
       01  VO-OUT.
           02  FILLER PIC X(72).
       01  FC-IO-CONTROL-WORDS.
           02  FILLER PIC X(14) VALUE 'SELECT      06'.
           02  FILLER PIC X(14) VALUE 'ASSIGN      06'.
           02  FILLER PIC X(14) VALUE 'MULTIPLE    08'.
           02  FILLER PIC X(14) VALUE 'RESERVE     07'.
           02  FILLER PIC X(14) VALUE 'FILE-LIMITS 11'.
           02  FILLER PIC X(14) VALUE 'FILE-LIMIT  10'.
           02  FILLER PIC X(14) VALUE 'ACCESS      06'.
           02  FILLER PIC X(14) VALUE 'PROCESSING  10'.
           02  FILLER PIC X(14) VALUE 'ACTUAL      06'.
           02  FILLER PIC X(14) VALUE 'NOMINAL     07'.
           02  FILLER PIC X(14) VALUE 'RECORD      06'.
           02  FILLER PIC X(14) VALUE 'RERUN       05'.
           02  FILLER PIC X(14) VALUE 'SAME        04'.
           02  FILLER PIC X(14) VALUE 'APPLY       05'.
           02  FILLER PIC X(14) VALUE 'TRACK-AREA  10'.
           02  FILLER PIC X(14) VALUE 'TRACK-LIMIT 11'.
           02  FILLER PIC X(14) VALUE 'SYMBOLIC    08'.
           02  FILLER PIC X(14) VALUE 'ORGANIZATION12'.
           02  FILLER PIC X(14) VALUE 'STATUS      06'.
           02  FILLER PIC X(14) VALUE 'COPY        04'.
       01  FC-IO REDEFINES FC-IO-CONTROL-WORDS.
           02  FC-IO-RESERVE OCCURS 21 TIMES.
             03  FC-IO-CNTL PIC X(12).
             03  FC-IO-COUNT PIC 99.
       01  FS-CONTROL-WORDS.
           02  FILLER PIC X(14) VALUE 'BLOCK       05'.
           02  FILLER PIC X(14) VALUE 'LABEL       05'.
           02  FILLER PIC X(14) VALUE 'JUNK-REPLACE01'.
           02  FILLER PIC X(14) VALUE 'DATA        04'.
           02  FILLER PIC X(14) VALUE 'REPORT      06'.
           02  FILLER PIC X(14) VALUE 'REPORTS     07'.
           02  FILLER PIC X(14) VALUE 'RECORD      06'.
           02  FILLER PIC X(14) VALUE 'COPY        04'.
       01  FS-CONTROL REDEFINES FS-CONTROL-WORDS.
           02  FS-RESERVE OCCURS 8 TIMES.
             03  FS-CNTL PIC X(12).
             03  FS-COUNT PIC 99.
       01  KEY-AREA.
           02  EDIT-KEY COMP VALUE 0.
           02  FILLER PIC X(28).
       01  FILLER REDEFINES KEY-AREA.
           02  FILLER PIC X.
           02  LINE-KEY PIC XXX.
           02  FILLER PIC X(28).
       01  REC72 PIC 99 VALUE 80.
       01  COMM-MSG.
           02  FILLER PIC X(3) VALUE  '<< '.
           02  C-MSG PIC X(44) VALUE SPACES.
           02  FILLER PIC X(3) VALUE ' >>'.
       01  BLOCK-CLAUSE.
           02  FILLER PIC X(4) VALUE SPACES.
           02  FILLER PIC X(11) VALUE 'BLOCK 1 IS '.
           02  BLK-FLD1 PIC X(31).
           02  FILLER PIC X(19) VALUE SPACES.
       01  BLOCK-THRU-CLAUSE.
           02  FILLER PIC X(8) VALUE SPACES.
           02  FILLER PIC X(5) VALUE 'THRU '.
           02  FILLER PIC X(21) VALUE SPACES.
       01  XW1.
           02  RECV-1 PIC X OCCURS 65.
       01  XW2.
           02  SEND-1 PIC X OCCURS 65.
       01  MOV-PARAM.
           02  STRT COMP VALUE 0.
           02  NUM COMP VALUE 0.
           02  DIS COMP VALUE 0.
           02  LNG COMP VALUE 0.
           02  MOVSUB1 COMP VALUE 0.
           02  MOVSUB2 COMP VALUE 0.
           02  MOVSUB3 COMP VALUE 0.
       01  FILFLD.
           02  FIL PIC XXX VALUE 'FIL'.
           02  FILCNT PIC 999 VALUE 0.
       01  SAVE-LO-TEXT PIC X(65).
       01  FD-COMPARE-WORD.
           02  SAVED-WORDS OCCURS 50 TIMES.
             03  STATUS PIC X.
             03  S-WORD COMP.
       01  FD-SAVE-WORD.
           02  FD-SAVED-WORD PIC X OCCURS 31 TIMES.
       01  LINE-SAVED.
           02  TOT-LINE PIC X OCCURS 990 TIMES.
       01  DISP-SAVED-WORD.
           02  DISP-SAVE-WORD PIC X OCCURS 9 TIMES.
       01  CI-REC.
           02  ID-ASTER PIC X.
           02  REC-CI.
           03  ID-FIRST PIC X(9).
           03  ID-FIRST-R REDEFINES ID-FIRST.
             04  ID-AREA-A PIC X(4).
             04  ID-AREA-B PIC X(5).
           03  ID-REST PIC X(56).
           02  XSEQ-OLD PIC X(6).
       01  ENVIRONMENT-SAVE-AREA.
           02  E-OB-COM PIC X(72) VALUE SPACES.
           02  E-SPEC-NAM PIC X(72) VALUE SPACES.
           02  E-I-O-SEC PIC X(72) VALUE SPACES.
           02  E-FILE-CONT PIC X(72) VALUE SPACES.
           02  E-I-O-CONT PIC X(72) VALUE SPACES.
       01  XSAVE-A-LINE.
           02  XSAVE-LINE PIC X OCCURS 66 TIMES.
       01  SAVE-RED REDEFINES XSAVE-A-LINE.
           02  FILLER PIC X(6).
           02  SAVLIN PIC X(60).
       01  HEAD1.
           02  FILLER PIC X(32) VALUE
                   '1CP-V TO CP-6 COBOL-74 CONVERTER'.
           02  FILLER PIC X(55) VALUE SPACES.
           02  HDATE   PIC X(16) VALUE SPACES.
           02  FILLER PIC X(3)  VALUE SPACES.
           02  FILLER PIC X(5) VALUE 'PAGE '.
           02  H1-PGNO PIC ZZZZ.
       01  ORGAN-LINE.
           05  FILLER PIC X(4) VALUE SPACES.
           05  FILLER PIC X(23)
               VALUE 'ORGANIZATION IS KEYED  '.
           05  FILLER PIC X(38) VALUE SPACES.
       01  PRNTR-LINE.
           05  FILLER PIC X(4) VALUE SPACES.
           05  FILLER PIC X(17) VALUE 'SYSOUT IS PRINTER'.
           05  FILLER PIC X(44) VALUE SPACES.
       01  GET-AREA.
           02  FILLER PIC X(8).
           02  HO-DA-YR PIC X(16).
           02  FILLER PIC XX.
       01  LO-OUT.
           02  FILLER PIC X VALUE SPACE.
           02  OUT-SEQ-NO PIC 9(6) VALUE 0.
           02  OUT-BODY.
             03  OUT-ASTER PIC X VALUE SPACE.
             03  OUT-TEXT PIC X(65) VALUE SPACES.
             03  OUT-8-12 REDEFINES OUT-TEXT.
               04  OUT-8 PIC X(4).
               04  OUT-12 PIC X(61).
             02  OUT-ID PIC X(8) VALUE SPACES.
           02  E-MSG PIC X(50) VALUE SPACES.
       01  SO-OUT.
           02  SO-SEQ PIC 9(6) VALUE 0.
           02  SO-TEXT.
             03  SO-ASTER PIC X VALUE SPACE.
             03  SO-TEXT-OUT PIC X(65).
             02  SO-OUT-ID PIC X(8).
       01  LINE-SCAN-SAVE-AREA.
           02  START-END-SAVE OCCURS 20 TIMES.
             03  V-START PIC 99.
             03  V-END PIC 99.
       01  FILE-CONTROL-WORD.
           02  FC-WORD PIC X OCCURS 11 TIMES.
       01  GEN-PARA.
           02  FILLER PIC X(13) VALUE 'CP-6-REQ-PARA'.
           02  PARA-COUNT PIC 9 VALUE 0.
           02  FILLER PIC X VALUE '.'.
       01  INSPECT-AREA.
           02  FILLER PIC X(5) VALUE SPACE.
           02  FILLER PIC X(8) VALUE 'INSPECT '.
           02  ID1 PIC X(20) VALUE SPACE.
           02  FILLER PIC X(15) VALUE ' REPLACING ALL '.
           02  FIG-CONST1 PIC X(6) VALUE SPACE.
           02  FILLER PIC X(4) VALUE ' BY '.
           02  FIG-CONST2 PIC X(6) VALUE SPACE.
           02  INSP-PERIOD PIC X VALUE SPACE.
       01  TRANS-SAVED-WORD.
           02  TRANS-SAVE-WORD PIC X OCCURS 20 TIMES.
       01  IDENTIFY-VERB.
           03  FILLER PIC X.
           03  IV3 PIC X(3).
           03  FILLER PIC X.
             03  V-12.
                 04  V-11.
                     05  V-10.
                          06  V-9.
                              07  V-8.
                                  08  V-7.
                                      09  V-6.
                                          10  V-5.
                                              11  V-4.
                                                   12  V-3  PIC X(3).
                                                   12  FILLER PIC X.
                                              11  FILLER PIC X.
                                          10  FILLER PIC X.
                                      09  FILLER PIC X.
                                  08  FILLER PIC X.
                               07  FILLER PIC X.
                            06  FILLER PIC X.
                         05  FILLER PIC X.
                      04  FILLER PIC X.
       01  DATA-SAVED-WORD.
           02  DATA-SAVE-WORD PIC X OCCURS 13 TIMES.
       01  DATA-RESERVE-WORDS.
           02  FILLER PIC X(15) VALUE  'CD             '.
           02  FILLER PIC X(15) VALUE  'DB             '.
           02  FILLER PIC X(15) VALUE  'ANY            '.
           02  FILLER PIC X(15) VALUE  'DAY            '.
           02  FILLER PIC X(15) VALUE  'EGI            '.
           02  FILLER PIC X(15) VALUE  'EMI            '.
           02  FILLER PIC X(15) VALUE  'EOP            '.
           02  FILLER PIC X(15) VALUE  'ESI            '.
           02  FILLER PIC X(15) VALUE  'GET            '.
           02  FILLER PIC X(15) VALUE  'TOP            '.
           02  FILLER PIC X(15) VALUE  'ALSO           '.
           02  FILLER PIC X(15) VALUE  'DATE           '.
           02  FILLER PIC X(15) VALUE  'FIND           '.
           02  FILLER PIC X(15) VALUE  'NULL           '.
           02  FILLER PIC X(15) VALUE  'ONLY           '.
           02  FILLER PIC X(15) VALUE  'SEND           '.
           02  FILLER PIC X(15) VALUE  'SETS           '.
           02  FILLER PIC X(15) VALUE  'TEXT           '.
           02  FILLER PIC X(15) VALUE  'TIME           '.
           02  FILLER PIC X(15) VALUE  'OPT            '.
           02  FILLER PIC X(15) VALUE  'ASCII          '.
           02  FILLER PIC X(15) VALUE  'EMPTY          '.
           02  FILLER PIC X(15) VALUE  'ENTRY          '.
           02  FILLER PIC X(15) VALUE  'ERASE          '.
           02  FILLER PIC X(15) VALUE  'MERGE          '.
           02  FILLER PIC X(15) VALUE  'ORDER          '.
           02  FILLER PIC X(15) VALUE  'OTHER          '.
           02  FILLER PIC X(15) VALUE  'PRIOR          '.
           02  FILLER PIC X(15) VALUE  'QUEUE          '.
           02  FILLER PIC X(15) VALUE  'REALM          '.
           02  FILLER PIC X(15) VALUE  'START          '.
           02  FILLER PIC X(15) VALUE  'STORE          '.
           02  FILLER PIC X(15) VALUE  'SYSIN          '.
           02  FILLER PIC X(15) VALUE  'TABLE          '.
           02  FILLER PIC X(15) VALUE  'BOTTOM         '.
           02  FILLER PIC X(15) VALUE  'COMP-4         '.
           02  FILLER PIC X(15) VALUE  'COMP-5         '.
           02  FILLER PIC X(15) VALUE  'COMP-6         '.
           02  FILLER PIC X(15) VALUE  'DB-KEY         '.
           02  FILLER PIC X(15) VALUE  'DELETE         '.
           02  FILLER PIC X(15) VALUE  'EBCDIC         '.
           02  FILLER PIC X(15) VALUE  'ENABLE         '.
           02  FILLER PIC X(15) VALUE  'EQUALS         '.
           02  FILLER PIC X(15) VALUE  'STATUS         '.
           02  FILLER PIC X(15) VALUE  'EXTEND         '.
           02  FILLER PIC X(15) VALUE  'FINISH         '.
           02  FILLER PIC X(15) VALUE  'IDS-II         '.
           02  FILLER PIC X(15) VALUE  'LENGTH         '.
           02  FILLER PIC X(15) VALUE  'LINAGE         '.
           02  FILLER PIC X(15) VALUE  'MEMBER         '.
           02  FILLER PIC X(15) VALUE  'MODIFY         '.
           02  FILLER PIC X(15) VALUE  'NATIVE         '.
           02  FILLER PIC X(15) VALUE  'REALMS         '.
           02  FILLER PIC X(15) VALUE  'SYSOUT         '.
           02  FILLER PIC X(15) VALUE  'TENANT         '.
           02  FILLER PIC X(15) VALUE  'UPDATE         '.
           02  FILLER PIC X(15) VALUE  'AUTHOR         '.
           02  FILLER PIC X(15) VALUE  'CONNECT        '.
           02  FILLER PIC X(15) VALUE  'CURRENT        '.
           02  FILLER PIC X(15) VALUE  'DEFAULT        '.
           02  FILLER PIC X(15) VALUE  'DISABLE        '.
           02  FILLER PIC X(15) VALUE  'DYNAMIC        '.
           02  FILLER PIC X(15) VALUE  'FILE-ID        '.
           02  FILLER PIC X(15) VALUE  'LOCALLY        '.
           02  FILLER PIC X(15) VALUE  'MAXIMUM        '.
           02  FILLER PIC X(15) VALUE  'MEMBERS        '.
           02  FILLER PIC X(15) VALUE  'MESSAGE        '.
           02  FILLER PIC X(15) VALUE  'MULTICS        '.
           02  FILLER PIC X(15) VALUE  'PRIVACY        '.
           02  FILLER PIC X(15) VALUE  'RECEIVE        '.
           02  FILLER PIC X(15) VALUE  'REMOVAL        '.
           02  FILLER PIC X(15) VALUE  'REPLACE        '.
           02  FILLER PIC X(15) VALUE  'REWRITE        '.
           02  FILLER PIC X(15) VALUE  'SEGMENT        '.
           02  FILLER PIC X(15) VALUE  'REMARKS        '.
           02  FILLER PIC X(15) VALUE  'LINKAGE        '.
           02  FILLER PIC X(15) VALUE  'CODE-SET       '.
           02  FILLER PIC X(15) VALUE  'CONSTANT       '.
           02  FILLER PIC X(15) VALUE  'LEVEL-62       '.
           02  FILLER PIC X(15) VALUE  'LEVEL-64       '.
           02  FILLER PIC X(15) VALUE  'LEVEL-66       '.
           02  FILLER PIC X(15) VALUE  'LEVEL-68       '.
           02  FILLER PIC X(15) VALUE  'OVERFLOW       '.
           02  FILLER PIC X(15) VALUE  'PRINTING       '.
           02  FILLER PIC X(15) VALUE  'RELATIVE       '.
           02  FILLER PIC X(15) VALUE  'SUPPRESS       '.
           02  FILLER PIC X(15) VALUE  'SYMBOLIC       '.
           02  FILLER PIC X(15) VALUE  'TERMINAL       '.
           02  FILLER PIC X(15) VALUE  'TRAILING       '.
           02  FILLER PIC X(15) VALUE  'SECURITY       '.
           02  FILLER PIC X(15) VALUE  'CHARACTER      '.
           02  FILLER PIC X(15) VALUE  'COLLATING      '.
           02  FILLER PIC X(15) VALUE  'DB-STATUS      '.
           02  FILLER PIC X(15) VALUE  'DUPLICATES     '.
           02  FILLER PIC X(15) VALUE  'EXCEPTION      '.
           02  FILLER PIC X(15) VALUE  'INCLUDING      '.
           02  FILLER PIC X(15) VALUE  'RETAINING      '.
           02  FILLER PIC X(15) VALUE  'RETENTION      '.
           02  FILLER PIC X(15) VALUE  'RETRIEVAL      '.
           02  FILLER PIC X(15) VALUE  'TRANSFORM      '.
           02  FILLER PIC X(15) VALUE  'DISCONNECT     '.
           02  FILLER PIC X(15) VALUE  'INITIALIZE     '.
           02  FILLER PIC X(15) VALUE  'MEMBERSHIP     '.
           02  FILLER PIC X(15) VALUE  'REALM-NAME     '.
           02  FILLER PIC X(15) VALUE  'SEQUENTIAL     '.
           02  FILLER PIC X(15) VALUE  'SORT-MERGE     '.
           02  FILLER PIC X(15) VALUE  'STANDARD-1     '.
           02  FILLER PIC X(15) VALUE  'SUB-SCHEMA     '.
           02  FILLER PIC X(15) VALUE  'USAGE-MODE     '.
           02  FILLER PIC X(15) VALUE  'DB-KEY-NAME    '.
           02  FILLER PIC X(15) VALUE  'DB-SET-NAME    '.
           02  FILLER PIC X(15) VALUE  'DESTINATION    '.
           02  FILLER PIC X(15) VALUE  'END-OF-PAGE    '.
           02  FILLER PIC X(15) VALUE  'INTERCHANGE    '.
           02  FILLER PIC X(15) VALUE  'SUB-QUEUE-1    '.
           02  FILLER PIC X(15) VALUE  'SUB-QUEUE-2    '.
           02  FILLER PIC X(15) VALUE  'SUB-QUEUE-3    '.
           02  FILLER PIC X(15) VALUE  'ALPHANUMERIC   '.
           02  FILLER PIC X(15) VALUE  'DB-DATA-NAME   '.
           02  FILLER PIC X(15) VALUE  'DB-EXCEPTION   '.
           02  FILLER PIC X(15) VALUE  'ORGANIZATION   '.
           02  FILLER PIC X(15) VALUE  'SUBSTITUTION   '.
           02  FILLER PIC X(15) VALUE  'COMMUNICATION  '.
           02  FILLER PIC X(15) VALUE  'DB-REALM-NAME  '.
       01  RESERVE-DATA-WORDS REDEFINES DATA-RESERVE-WORDS.
           02  DATA-RESERVE OCCURS 128 TIMES.                           TABLED
             03  D-RESERVE PIC X(15).
       01  PROC-SAVED-WORD.
           02  PROC-SAVE-WORD PIC X OCCURS 15 TIMES.



       PROCEDURE DIVISION.
        SSI SECTION.
      *   F I L E  C O M P R E S S  R O U T I N E *****************************
       OPEN-IT.
           OPEN INPUT SI OUTPUT CO.
       READ-IT.
           MOVE SPACES TO COMPRESSOUT IN-REC TEXT-OUT.
           MOVE SPACES TO REMARKS-SAVE-AREA SAVED-WORD ORIGIN.
           MOVE SPACES TO SCANNER-REC SAVE-A-LINE.
      *    THIS PART OF THE PROG WILL COMPRESS ALL SPACES ONLY
      *    ALLOWING 1 SPACE BETWEEN WORDS.
      *  EXCEPT IN WORKING-STORAGE WHERE THEY WILL NOT BE COMPRESSED.
           READ SI     INTO IN-REC AT END GO TO ALL-IN.
           MOVE COMPRESS-CK TO SAVE-SEQ SAVESEQ.
           IF IN-TEXT (1) = '/'
               MOVE SPACES TO COMPRESSOUT
               MOVE '/' TO COMPRESSOUT
               WRITE COMPRESSOUTX
               MOVE ' ' TO IN-TEXT (1).
           IF FOUR NOT = '    ' MOVE 0 TO REMARKS-SW.
           IF SEVEN = 'REMARKS' MOVE 1 TO REMARKS-SW.
           IF IN-TEXT (1) = '*'
               OR REMARKS-SW = 1
               MOVE IN-TEXT-RE TO COMPRESSOUT
               WRITE COMPRESSOUTX
               GO TO READ-IT.
           MOVE 0 TO TALLE.
           INSPECT IN-REC TALLYING TALLE FOR ALL ' INCLUDE '.
           IF TALLE NOT = 0
             INSPECT IN-REC REPLACING ALL ' INCLUDE ' BY ' COPY    '.
           MOVE 0 TO TALLE.
           INSPECT IN-REC TALLYING TALLE FOR ALL ' COPY '.
           IF TALLE NOT = 0
               MOVE '*' TO IN-TEXT (1)
               MOVE IN-TEXT-RE TO COMPRESSOUT
               WRITE COMPRESSOUTX
               MOVE ' ' TO IN-TEXT (1)
               INSPECT IN-REC REPLACING ALL ' COPY ' BY ' ?OPY '
               INSPECT IN-REC REPLACING CHARACTERS BY ' '
                   BEFORE INITIAL '?'
               INSPECT IN-REC REPLACING ALL '?OPY' BY 'COPY'.
           MOVE 1 TO X Y.
      *  IF NON-NUMERIC LITERAL CONTINUATION -- ADD DASH *********
           IF QUOTE1 = 1 MOVE '-' TO IN-TEXT (1) MOVE 0 TO QUOTE1.
           IF ELEVEN = 'WORKING-STO' MOVE '1' TO NO-COMP
             GO TO STOP-COMPRESS.
           IF ELEVEN = 'PROCEDURE D' OR ELEVEN = 'PROCEDURE  '
               MOVE ' ' TO NO-COMP
             GO TO CONT-COMP.
           IF THRE = 'FD ' OR THRE = 'SD ' MOVE ' ' TO NO-COMP
           MOVE 'F' TO IN-TEXT (1)
           MOVE 1 TO FD-SWITCH
               IF F4 NOT = ' ' PERFORM SHIFT-1 THRU SHIFT-EXIT
               GO TO CONT-COMP ELSE
             GO TO CONT-COMP.
              MOVE 1 TO FD-SWITCH.
           IF FD-SWITCH = 1 MOVE 0 TO X
           GO TO SCAN-NUMERIC.
           IF NO-COMP = '1' GO TO STOP-COMPRESS.
       CONT-COMP.
       FIRST-MOVE.
           MOVE IN-TEXT (X) TO BUILD-TEXT (Y).
           ADD 1 TO X Y.
      *    IF IN-TEXT (X) = '"' MOVE QUOTE TO IN-TEXT (X).
           IF X > 4 GO TO SCAN-NEXT.
           GO TO FIRST-MOVE.
       SCAN-NEXT.
      *    START COL 12 **
      *    DO NOT COMPRESS SPACES WITHIN QUOTES.
      * TO SKPA IF LEFT QUOTE ON THE LINE ************
           COMPUTE C = X - 1.
           IF IN-TEXT (X) = QUOTE AND QUOTE1 = 0
             AND IN-TEXT (C)     = SPACE
             MOVE 1 TO QUOTE1
           GO TO SKPA.
      *   TO SKPA IF RIGHT QUOTE ON THE LINE *************
           COMPUTE C = X + 1.
           IF IN-TEXT (X) = QUOTE AND QUOTE1 = 1
             AND IN-TEXT (C)     = SPACE
             MOVE 0 TO QUOTE1
           GO TO SKPA.
      *   TO SKPA IF RIGHT QUOTE AND PERIOD ON THE LINE ********
           IF IN-TEXT (X) = QUOTE AND QUOTE1 = 1
              AND IN-TEXT (C) = '.'
              MOVE 0 TO QUOTE1
              GO TO SKPA.
           IF IN-TEXT (X) = QUOTE AND QUOTE1 = 1
             AND IN-TEXT (C) = ',' MOVE 0 TO QUOTE1
             GO TO SKPA.
           IF IN-TEXT (X) = QUOTE AND QUOTE1 = 1
             AND IN-TEXT (C) = ';' MOVE 0 TO QUOTE1
             GO TO SKPA.
           IF IN-TEXT (X) = QUOTE AND QUOTE1 = 1
           AND IN-TEXT (C) = ')' MOVE 0 TO QUOTE1
           GO TO SKPA.
      *   TO SKP1 IF SPACE AND NOT WITHIN QUOTES *********
           IF IN-TEXT (X) = SPACE AND QUOTE1 = 0  GO TO SKP1.
      *   END QUOTE COMPRESS ROUTINE.
       SKPA.
           MOVE IN-TEXT (X) TO BUILD-TEXT (Y).
           ADD 1 TO X Y.
      *    IF IN-TEXT (X) = '"' MOVE QUOTE TO IN-TEXT (X).
           IF X > 66 GO TO WRITE-IT.
           GO TO SCAN-NEXT.
       SKP1.
           ADD 1 TO X.
      *    IF IN-TEXT (X) = '"' MOVE QUOTE TO IN-TEXT (X).
           IF X > 66 GO TO WRITE-IT.
      *   DO NOT COMPRESS SPACES WITHIN QUOTES.
      *  TO SKB IF LEFT QUOTE **********
           COMPUTE C = X - 1.
           IF IN-TEXT (X) = QUOTE AND QUOTE1 = 0
             AND IN-TEXT (C)     = SPACE
             MOVE 1 TO QUOTE1
           GO TO SKPB.
      *   TO SKB IF RIGHT QUOTE **************
           COMPUTE C = X + 1.
           IF IN-TEXT (X) = QUOTE AND QUOTE1 = 1
             AND IN-TEXT (C)     = SPACE
             MOVE 0 TO QUOTE1
           GO TO SKPB.
      *  TOSKP1 IF SPACE AND NOT WITHIN QUOTES *********
           IF IN-TEXT (X) = SPACE AND QUOTE1 = 0 GO TO SKP1.
      *   END QUOTE COMPRESS ROUTINE.
       SKPB.
           ADD 1 TO Y.
           MOVE IN-TEXT (X) TO BUILD-TEXT (Y)
           ADD 1 TO X Y.
      *    IF IN-TEXT (X) = '"' MOVE QUOTE TO IN-TEXT (X).
           IF X > 66 GO TO WRITE-IT.
           GO TO SCAN-NEXT.
       WRITE-IT.
      *  IF LITERAL CONTINUED AND SPACES TRUNCATED GO TO SHIFT-RIGHT ********
           IF QUOTE1 = 1 AND Y IS NOT = X GO TO SHIFT-RIGHT.
       SHIFT-RETURN.
           MOVE TEXT-OUT TO COMPRESSOUT.
           WRITE COMPRESSOUTX.
           GO TO READ-IT.
       SHIFT-RIGHT.
           MOVE TEXT-OUT TO SCANNER-REC.
           MOVE SPACES TO TEXT-OUT.
           GO TO SHIFT-PARA-CHECK.
           SUBTRACT 1 FROM X Y.
           IF Y < 6 GO TO FILL-IN.
           MOVE REC-BYTE (Y) TO BUILD-TEXT (X).
           GO TO SHIFT-LOOP.
       FILL-IN.
           IF X > 5 MOVE ',' TO BUILD-TEXT (X)
           SUBTRACT 1 FROM X
           GO TO FILL-IN ELSE
           GO TO SHIFT-RETURN.
       SHIFT-PARA-CHECK.
           IF REC-BYTE (2) = SPACE GO TO SHIFT-LOOP.
           MOVE 0 TO A.
       SHIFT-PERIOD-CHECK.
           ADD 1 TO A.
           IF REC-BYTE (A) = '.' GO TO SHIFT-PERIOD-FOUND.
           IF A > 66 GO TO SHIFT-LOOP.
           MOVE REC-BYTE (A) TO BUILD-TEXT (A).
           GO TO SHIFT-PERIOD-CHECK.
       SHIFT-PERIOD-FOUND.
           MOVE REC-BYTE (A) TO BUILD-TEXT (A).
           MOVE TEXT-OUT TO COMPRESSOUT.
           WRITE COMPRESSOUTX.
           MOVE SPACES TO TEXT-OUT.
           ADD 2 TO A.
       SHIFT-ADD-COMMA.
           SUBTRACT 1 FROM A.
           IF A = 0 GO TO SHIFT-LOOP.
           IF A < 6 MOVE SPACE TO REC-BYTE (A)
           ELSE MOVE ',' TO REC-BYTE (A).
           GO TO SHIFT-ADD-COMMA.
       STOP-COMPRESS.
           MOVE IN-TEXT (X) TO BUILD-TEXT (Y).
       QUOTE-SKIP.
           ADD 1 TO X Y.
           IF X > 66 GO TO STOP-WRITE.
           IF IN-TEXT (X) = '"' MOVE '"'   TO BUILD-TEXT (Y)
           GO TO QUOTE-CHECK.
           IF IN-TEXT (X) = QUOTE GO TO SINGLE-QUOTE.
           GO TO STOP-COMPRESS.
       QUOTE-CHECK.
           IF QUOTE1 = 0 MOVE 1 TO QUOTE1 GO TO QUOTE-SKIP.
           IF QUOTE1 = 1 MOVE 0 TO QUOTE1 GO TO QUOTE-SKIP.
       SINGLE-QUOTE.
           IF QUOTE1 = 0 MOVE 1 TO QUOTE1 GO TO STOP-COMPRESS.
       STOP-WRITE.
           MOVE TEXT-OUT TO COMPRESSOUT.
           WRITE COMPRESSOUTX.
           GO TO READ-IT.
       SCAN-NUMERIC.
           ADD 1 TO X.
           IF X > 66 GO TO STOP-COMPRESS.
           IF IN-TEXT (X) = SPACE GO TO SCAN-NUMERIC.
           IF IN-TEXT (X) = '0' OR
              IN-TEXT (X) = '1' OR
              IN-TEXT (X) = '2' OR
              IN-TEXT (X) = '3' OR
              IN-TEXT (X) = '4' OR
              IN-TEXT (X) = '5' OR
              IN-TEXT (X) = '6' OR
              IN-TEXT (X) = '7' OR
              IN-TEXT (X) = '8' OR
              IN-TEXT (X) = '9'
           MOVE 1 TO X
           MOVE 0 TO FD-SWITCH
           MOVE '1' TO NO-COMP
           GO TO STOP-COMPRESS.
           MOVE 1 TO X.
           MOVE 'F' TO IN-TEXT (X).
           GO TO CONT-COMP.
       ALL-IN.
           CLOSE SI     CO.
      *   S T A T E M E N T   B R E A K O U T   R O U T I N E  ***************
       START-VERB-BREAKOUT.
           OPEN INPUT CO.
           OPEN OUTPUT VO.
       READ-CI.
           MOVE SPACES TO CI-IN.
           READ CO INTO CI-IN AT END GO TO EOF-CI.
           INSPECT CI-X       REPLACING ALL LINE-FEED BY ' '.
           MOVE SEQ-OLD TO SEQ-OUT.
           IF ASTER = '*'
               PERFORM WRITE-VO
               GO TO READ-CI.
           IF COPY-SW = 0
               MOVE 0 TO TALLE
               INSPECT CI-IN TALLYING TALLE
               FOR ALL 'IDENTIFICATION'
               IF TALLE = 0 MOVE 1 TO DATA-DIV-SWITCH
               MOVE 2 TO COPY-SW
               GO TO CI-LOOP.
           MOVE 1 TO COPY-SW.
      *  IS INPUT RECORD A COMMENT *****
           IF ASTER = '*' MOVE CI-IN TO VO-OUT
           PERFORM WRITE-VO
           GO TO READ-CI.
           IF IDENT = 'ENVIRONME' MOVE CI-IN      TO VERBOUT
           GO TO READ-CI-LOOP.
           PERFORM WRITE-VO.
           GO TO READ-CI.
       WRITE-VO.
           MOVE CI-IN      TO VERBOUTX.
           WRITE VERBOUTX.
           MOVE SPACES TO ASTER.
           MOVE SPACES TO VERBOUT.
       FIND-ENVIR-VERBS.
      *   FILE- CONTROL SECTION FOUND -- WRITE ONE STATEMENT PER LINE
      *   UNTIL DATA DIVISION REACHED **************************
       READ-CI-LOOP.
           MOVE LB-BUILD-AREA TO LB-PRINT-AREA.
           READ CO INTO CI-IN AT END GO TO EOF-CI.
           INSPECT CI-X       REPLACING ALL LINE-FEED BY ' '.
      *    MOVE SEQ-OLD TO SEQ-OUT.
           IF ASTER = '*'
               PERFORM ASTER-ROUTE
               GO TO READ-CI-LOOP
               ELSE MOVE 0 TO FRST-ASTR.
           IF IDENT = 'SPECIAL-N' MOVE 1 TO SPECIAL-NAME-SWITCH
           MOVE 0 TO DATA-DIV-SWITCH.
           IF IDENT = 'FILE-CONT' MOVE 0 TO SPECIAL-NAME-SWITCH
             DATA-DIV-SWITCH.
           IF SPECIAL-NAME-SWITCH = 1
              PERFORM WRITE-VO
              GO TO READ-CI-LOOP.
           IF IDENT = 'DATA DIVI' MOVE 1 TO DATA-DIV-SWITCH
           MOVE 0 TO SPECIAL-NAME-SWITCH.
           IF IDENT = 'WORKING-S' OR IDENT = 'PROCEDURE'
             WRITE VERBOUTX
             PERFORM WRITE-VO
             GO TO FINISH-READ-WRITE.
       CI-LOOP.
           IF COPY-SW = 2     AND ASTER NOT = 'F'
               GO TO F-R-W.
           WRITE VERBOUTX
           MOVE CI-IN TO VERBOUTX
           GO TO READ-CI-LOOP.
           IF ASTER = 'F' AND COPY-SW = 2
               MOVE 1 TO FD-CPY-SW.
           IF ASTER NOT = '/'
           MOVE ' ' TO ASTER.
           MOVE SPACES TO SCANNER-REC SAVE-A-LINE PRINT-STORAGE.
           MOVE 0 TO NAME1 NAME2 NAME3 NAME4         FRSTNAME END-OF-REC.
           MOVE 0 TO EOL2         FC-IO-WORD.
           MOVE CI-IN TO SCANNER-REC.
           MOVE 1 TO X Y.
           MOVE 0 TO C.
       ENVIR-SCAN.
      *   THIS PARAGRAPH WILL LOAD A WORD FOR A LOOK-UP **********
      *   SO THE VERBS THAT START STATEMENTS CAN BE FOUND **************
           ADD 1 TO X C.
           IF Y > 12 AND REC-BYTE (X) IS NOT = SPACE
             GO TO WORD-TOO-BIG.
           IF REC-BYTE (X) = SPACE
             AND REC-BYTE (C) IS NOT = SPACE
             AND REC-BYTE (C) IS NOT = '.'
             AND X IS > 6
             GO TO WORD-LOADED.
           IF REC-BYTE (X) = SPACE AND X > 6
              AND REC-BYTE (C) IS = '.'
             GO TO WORD-WITH-PERIOD.
           IF REC-BYTE (C) IS = ','
           GO TO WORD-WITH-PERIOD.
           IF REC-BYTE (C) IS = ';'
           GO TO WORD-WITH-PERIOD.
           IF REC-BYTE (X) = SPACE AND X IS NOT > 6
             GO TO ENVIR-SCAN.
           IF REC-BYTE (X) IS NOT = SPACE MOVE
             REC-BYTE (X) TO FC-IO-SAVE (Y)
             ADD 1 TO Y
             GO TO ENVIR-SCAN.
           IF REC-BYTE (X) = SPACE AND REC-BYTE (C) = SPACE
             OR X IS > 66
           GO TO LINE-STORED.
       WORD-WITH-PERIOD.
      *    BLANK OUT PERIOD FOR PROPER WORD LOOK-UP *****************
           SUBTRACT 1 FROM Y.
           MOVE SPACE TO FC-IO-SAVE (Y).
       WORD-LOADED.
      *    WORD IS READY FOR TABLE LOOK-UP *******************
            IF SPECIAL-NAME-SWITCH = 1 GO TO LOOK-RETURN.
           IF DATA-DIV-SWITCH  = 1 GO TO DATA-DIV-ON.
           PERFORM LOOK-FOR-STATEMENT THRU LOOK-STATE-END
             VARYING Z FROM 1 BY 1 UNTIL Z = 22.
       LOOK-RETURN.
           MOVE 0 TO Z.
           COMPUTE B = X - A.
           IF FOUND = 'F' MOVE ' ' TO FOUND ELSE GO TO NAME-RECORDED.
      *    WORD IS A STATEMENT VERB -- STORE BEGINING BYTE ADDRESS ********
           IF NAME1 = 0 MOVE B TO NAME1 GO TO NAME-RECORDED.
           IF NAME2 = 0 MOVE B TO NAME2 GO TO NAME-RECORDED.
           IF NAME3 = 0 MOVE B TO NAME3 GO TO NAME-RECORDED.
           IF NAME4 = 0 MOVE B TO NAME4 GO TO NAME-RECORDED.
      *    ONLY 4 VERBS ALLOWED PER LINE **********************
           GO TO TOO-MANY-NAMES.
       LOOK-FOR-STATEMENT.
           IF FC-IO-WORD = FC-IO-CNTL (Z)
           MOVE FC-IO-COUNT (Z) TO A
           MOVE 'F' TO FOUND
           MOVE 21 TO Z.
       LOOK-STATE-END. EXIT.
       DATA-DIV-ON.
           PERFORM LOOK-DATA-DIV THRU LOOK-DATA-END
             VARYING Z FROM 1 BY 1 UNTIL Z = 9.
           GO TO LOOK-RETURN.
       LOOK-DATA-DIV.
           IF FC-IO-WORD = FS-CNTL (Z)
             MOVE FS-COUNT (Z) TO A
             MOVE 'F' TO FOUND
             MOVE 8 TO Z.
       LOOK-DATA-END. EXIT.
       WORD-TOO-BIG.
           ADD 1 TO X C.
           IF X > 66 GO TO NAME-RECORDED.
           IF REC-BYTE (X) = SPACE GO TO NAME-RECORDED.
           GO TO WORD-TOO-BIG.
       NAME-RECORDED.
           MOVE SPACES TO FC-IO-WORD.
           MOVE 1 TO Y.
           GO TO ENVIR-SCAN.
       TOO-MANY-NAMES.
           DISPLAY 'TOO MANY STATEMENT NAMES -- ABORT'
               UPON PRINTER.
           GO TO EOF-CI.
       ENVIR-SEARCH-OVER.
           WRITE VERBOUTX.
           PERFORM WRITE-VO.
           GO TO EOF-CI.
       LINE-STORED.
      *    THE WHOLE LINE HAS BEEN SEARCHED --- NOW BREAK IT OUT WITH   ********
      *    ONLY ONE STATEMENT PER LINE ****************************
      *   NAME 1 - 4 CONTAINS THE STARTING BYTE ADDRESS OF WORDS ************
      *    THAT ARE IN THE TABLE  ***********************************
           MOVE C TO LB-BUILD-AREA.
           MOVE C TO EOL2.
           IF NAME1 = 0 GO TO MOVE-FULL-LINE.
           IF NAME1 = 6 GO TO NOT-CONTINUED.
           IF REC-BYTE (2) IS NOT = ' '
             MOVE 0 TO X Y
             MOVE NAME1 TO EOL1
             GO TO PARA-NAME.
      *   THE STATEMENT ON PRIVIOUS LINE WAS CONTINUED TO THIS LINE ************
      *   COMBINE AND WRITE COMPLETE STATEMENT ON ONE LINE    ******************
           MOVE 5 TO X.
           MOVE EOL1 TO Y.
           COMPUTE EOL1 = EOL1 + NAME1 - 5.
           MOVE VERBOUTX TO PRINT-STORAGE.
       PART-CONTINUE.
           ADD 1 TO X Y.
           IF Y = EOL1 OR X > 66
           MOVE PRINT-STORAGE TO VERBOUTX
           MOVE SPACES TO PRINT-STORAGE
           GO TO NOT-CONTINUED.
           MOVE REC-BYTE (X) TO PRINT-HOLD (Y).
           GO TO PART-CONTINUE.
       PARA-NAME.
      *    THE LINE CONTAINS A PARAGRAPH NAME AND A STATEMENT **************
           ADD 1 TO X Y.
           IF Y = EOL1 OR X > 66
             MOVE PRINT-STORAGE TO VERBOUTX
             MOVE SPACES TO PRINT-STORAGE
             GO TO NOT-CONTINUED.
           MOVE REC-BYTE (X) TO PRINT-HOLD (Y).
           GO TO PARA-NAME.
       NOT-CONTINUED.
      *   NEW STATEMENT BEGINS IN BYTE 6 OR NAME1 CONTAINS  **************
      *   ADDRESS OF NEXT STATEMENT. EOL1 = LAST BYTE OF PRINTOUT AREA *********
      *   EOL2 = LAST BYTE OF PRINT BUILD-UP AREA.
           MOVE NAME1 TO X.
           SUBTRACT 1 FROM X.
           MOVE 5 TO Y.
           IF NAME2 NOT = 0 MOVE NAME2 TO C.
           IF NAME2 = 0 MOVE EOL2 TO C.
       NAME1-LOOP.
           ADD 1 TO X Y.
           IF X = C OR X > 66
              MOVE SEQ-OLD TO SEQ-PRNT
              GO TO PRINT-NAME1.
           MOVE REC-BYTE (X) TO PRINT-HOLD (Y).
           GO TO NAME1-LOOP.
       PRINT-NAME1.
           MOVE Y TO EOL1.
           IF (COPY-SW = 2 AND P1-SW = 1)
               OR COPY-SW NOT = 2
               WRITE VERBOUTX.
           MOVE 1 TO P1-SW.
           MOVE PRINT-STORAGE TO VERBOUTX.
           MOVE SPACES TO PRINT-STORAGE.
       MOVE-NAME2.
           IF NAME2 = 0 GO TO CK-NAME3.
           MOVE 0 TO NAME2.
           IF NAME3 NOT = 0 MOVE NAME3 TO C.
           IF NAME3 = 0 MOVE EOL2 TO C.
           MOVE 5 TO Y.
           SUBTRACT 1 FROM X.
           GO TO NAME1-LOOP.
       CK-NAME3.
           IF NAME3 = 0 GO TO CK-NAME4.
           MOVE 0 TO NAME3.
           IF NAME4 NOT = 0 MOVE NAME4 TO C.
           IF NAME4 = 0 MOVE EOL2 TO C.
           MOVE 5 TO Y.
           SUBTRACT 1 FROM X.
           GO TO NAME1-LOOP.
       CK-NAME4.
           MOVE 0 TO NAME4.
           MOVE EOL2 TO C.
           MOVE 5 TO Y.
           SUBTRACT 1 FROM X.
           GO TO NAME1-LOOP.
       MOVE-FULL-LINE.
      *    THERE ARE NO STATEMENT VERBS ON THIS LINE ***********
      *    IT MAY BE A CONTINUATION OF THE LAST LINE ***********
           IF REC-BYTE (2) = SPACE MOVE 5 TO X
           MOVE EOL1 TO Y
           COMPUTE EOL1 = EOL2 + EOL1 - 5.
           IF REC-BYTE (2) = SPACE AND EOL1 IS NOT > 66
           MOVE VERBOUTX TO PRINT-STORAGE
           GO TO ITS-CONTINUED.
       CONT-MOVE.
           MOVE CI-IN      TO PRINT-STORAGE.
           PERFORM PRINT-NAME1.
           GO TO READ-CI-LOOP.
       ITS-CONTINUED.
      *    BYTE 2 BLANK MEANS FIRST WORD DOES NOT START AT BYTE 8  ***********
      *    AND CANNOT BE A PARAGRAPH NAME , AND IS NOT A STATEMENT, ***********
      *    THEREFORE IT MUST BE A CONTINUATION OF LAST LINE.  ****************
      *  UNLESS LINE ENDS WITH A PERIOD. **********************
           IF LB-PRINT-AREA NOT < 2 SUBTRACT 1 FROM LB-PRINT-AREA.
           IF PRINT-HOLD (LB-PRINT-AREA) = '.' GO TO CONT-MOVE.
           ADD 1 TO X Y.
           IF Y = EOL1 OR X > 66
           MOVE PRINT-STORAGE TO VERBOUTX
           GO TO READ-CI-LOOP.
           MOVE REC-BYTE (X) TO PRINT-HOLD (Y).
           GO TO ITS-CONTINUED.
       WRITE-FORMATED.
           WRITE VERBOUTX.
           MOVE PRINT-STORAGE TO VERBOUTX.
           MOVE SPACES TO PRINT-STORAGE.
           MOVE EOL2 TO EOL1.
       FINISH-READ-WRITE.
           MOVE SPACES TO CI-IN.
           READ CO INTO CI-IN AT END GO TO EOF-CI.
       F-R-W.
           IF FD-CPY-SW = 1
               PERFORM PRINT-NAME1.
           INSPECT CI-X REPLACING ALL LINE-FEED BY ' '.
           MOVE SEQ-OLD TO SEQ-OUT.
           MOVE SEQ-OLD TO SAVE-THE-SEQ.
           IF ASTER = '*' PERFORM WRITE-VO
               GO TO FINISH-READ-WRITE.
           IF COPY-SW = 2
               MOVE 1 TO PROC-SW.
           IF PROC-SW = 0 AND IDENT = 'PROCEDURE'
      *        MOVE 0 TO TALLE
      *        INSPECT CI-IN TALLYING TALLE FOR
      *        ALL 'PROCEDURE DIVISION'
      *        IF TALLE NOT = 0 MOVE 1 TO PROC-SW.
                MOVE 1 TO PROC-SW.
           IF PROC-SW = 1
               PERFORM LOOK-FOR-VERBS THRU
                  L-EXIT.
           MOVE SAVE-THE-SEQ TO SEQ-OUT.
           MOVE SAVE-THE-SEQ TO SEQ-OLD.
           PERFORM WRITE-VO.
           GO TO FINISH-READ-WRITE.
       EOF-CI.
           IF COPY-SW = 2 WRITE VERBOUTX.
           CLOSE CO VO.
      *    DISPLAY 'END-OF-PROG' UPON PRINNTER.
           GO TO START-ID-DIV.
       LOOK-FOR-VERBS.
           IF ASTER = '*' GO TO L-EXIT.
           IF CI-IN = BLNKS GO TO L-EXIT.
           MOVE CI-IN TO W2.
           MOVE SPACES TO W1.
           MOVE 0 TO SUB1 SUB2.
           MOVE 0 TO FIRST-VERB-SW.
           PERFORM L-1 5 TIMES.
           GO TO L-2.
       L-1.
           MOVE 0 TO FIRST-WORD-SW.
           ADD 1 TO SUB1 SUB2.
           MOVE SND (SUB1) TO RECV (SUB2).
       L-2.
           IF SND (2) NOT = ' ' OR SND (3) NOT = ' '
               OR SND (4) NOT = ' ' OR SND (5) NOT = ' '
               GO TO L-EXIT.
           MOVE SUB1 TO SUB3.
       GET-FIRST-CHR.
           ADD 1 TO SUB3.
           IF SUB3 = 67 GO TO END-LINE.
       GET-1.
           IF SND (SUB3) = ' ' OR SND (SUB3) = ','
               GO TO GET-FIRST-CHR.
           IF SND (SUB3) = QUOTE PERFORM MOVE-LIT THRU LIT-EXIT
               MOVE 1 TO FIRST-WORD-SW
               IF SUB3 = 67 GO TO END-LINE
               ELSE GO TO GET-1.
           MOVE SPACES TO W3.
           MOVE SUB3 TO  SUB1.
           MOVE 0 TO SUB4.
       GOT-1ST-CHR.
           ADD 1 TO SUB4.
           IF SUB4 = 10 GO TO NOT-VERB.
           MOVE SND (SUB3) TO CHK (SUB4).
       GET-NEXT-CHR.
           ADD 1 TO SUB3.
           IF SUB3 = 67 GO TO NOT-VERB.
           IF SND (SUB3) = ' ' GO TO CHK-VERB.
           IF SND (SUB3) = ',' GO TO CHK-VERB.
           IF SND (SUB3) = '.'
               COMPUTE SUB5 = SUB3 + 1
               IF SND (SUB5) NOT = ' ' NEXT SENTENCE
               ELSE
               MOVE 0 TO NOTE-SW
               GO TO NOT-VERB.
           GO TO GOT-1ST-CHR.
       CHK-VERB.
           IF NOTE-SW = 1 GO TO NOT-VERB.
           IF W3 = 'NOTE' MOVE 1 TO NOTE-SW
               GO TO NEW-LINE-VERB.
           IF W3 = 'ACCEPT' GO TO NEW-LINE-VERB.
           IF W3 = 'ADD' GO TO NEW-LINE-VERB.
           IF W3 = 'ALTER' GO TO NEW-LINE-VERB.
           IF W3 = 'CALL' GO TO NEW-LINE-VERB.
           IF W3 = 'CLOSE' GO TO NEW-LINE-VERB.
           IF W3 = 'DISPLAY' GO TO NEW-LINE-VERB.
           IF W3 = 'UPON' GO TO NEW-LINE-VERB.
           IF W3 = 'DIVIDE' GO TO NEW-LINE-VERB.
           IF W3 = 'COMPUTE' GO TO NEW-LINE-VERB.
           IF W3 = 'ELSE' GO TO NEW-LINE-VERB.
           IF W3 = 'ENTER' GO TO NEW-LINE-VERB.
           IF W3 = 'EXHIBIT' GO TO NEW-LINE-VERB.
           IF W3 = 'GENERATE' GO TO NEW-LINE-VERB.
           IF W3 = 'GO' GO TO NEW-LINE-VERB.
           IF W3 = 'IF' GO TO NEW-LINE-VERB.
           IF W3 = 'INSPECT' GO TO NEW-LINE-VERB.
           IF W3 = 'MOVE' GO TO NEW-LINE-VERB.
           IF W3 = 'RESET' GO TO NEW-LINE-VERB.
           IF W3 = 'SEEK' GO TO NEW-LINE-VERB.
           IF W3 = 'EXAMINE' GO TO NEW-LINE-VERB.
           IF W3 = 'INITIATE' GO TO NEW-LINE-VERB.
           IF W3 = 'MULTIPLY' GO TO NEW-LINE-VERB.
           IF W3 = 'OPEN' GO TO NEW-LINE-VERB.
           IF W3 = 'PERFORM' GO TO NEW-LINE-VERB.
           IF W3 = 'READ' GO TO NEW-LINE-VERB.
           IF W3 = 'READY' GO TO NEW-LINE-VERB.
           IF W3 = 'RELEASE' GO TO NEW-LINE-VERB.
           IF W3 = 'SEARCH' GO TO NEW-LINE-VERB.
           IF W3 = 'SORT' GO TO NEW-LINE-VERB.
           IF W3 = 'STOP' GO TO NEW-LINE-VERB.
           IF W3 = 'STRING' GO TO NEW-LINE-VERB.
           IF W3 = 'SUBTRACT' GO TO NEW-LINE-VERB.
           IF W3 = 'TERMINATE' GO TO NEW-LINE-VERB.
           IF W3 = 'UNSTRING' GO TO NEW-LINE-VERB.
           IF W3 = 'WRITE' GO TO NEW-LINE-VERB.
           IF W3 = 'WHEN' GO TO NEW-LINE-VERB.
           IF W3 = 'SET' GO TO NEW-LINE-VERB.
           IF W3 = 'NEXT' GO TO NEW-LINE-VERB.
           IF FIRST-VERB-SW = 0
               AND COPY-SW = 2
               GO TO L-EXIT.
       NOT-VERB.
           MOVE 1 TO FIRST-WORD-SW.
           ADD 1 TO SUB2.
           MOVE SND (SUB1) TO RECV (SUB2).
           IF RECV (SUB2) = ',' MOVE ' ' TO RECV (SUB2).
       MOVE-NEXT-CHR.
           ADD 1 TO SUB1.
           IF SUB1 = 67 GO TO END-LINE.
           IF SND (SUB1) = QUOTE
               MOVE SUB1 TO SUB3
               MOVE SUB3 TO SUB1
               IF SUB1 = 67 GO TO END-LINE
               ELSE PERFORM NOT-VERB
                    GO TO GET-FIRST-CHR.
           IF SND (SUB1) = ' ' OR SND (SUB1) = ','
               PERFORM NOT-VERB
               MOVE SUB1 TO SUB3
               GO TO GET-FIRST-CHR.
           IF SND (SUB1) = '.'
               COMPUTE SUB5 = SUB1 + 1
               IF SND (SUB5) NOT = ' ' NEXT SENTENCE ELSE
               GO TO NEW-LINE.
           PERFORM NOT-VERB.
           GO TO MOVE-NEXT-CHR.
       NEW-LINE.
           PERFORM NOT-VERB.
           PERFORM SCAN-LINE THRU SCAN-EXIT.
           IF BLD-SW = 0 GO TO END-LINE.
           ADD 1 TO SUB1.
       NEW-LINE-1.
           MOVE W1 TO CI-IN.
      *    MOVE 'V' TO ASTER.
           MOVE SAVE-THE-SEQ TO SEQ-OUT.
           MOVE SAVE-THE-SEQ TO SEQ-OLD.
           PERFORM WRITE-VO.
           MOVE 0 TO FIRST-WORD-SW.
           MOVE SPACES TO W1.
           MOVE 5 TO SUB2.
            MOVE 1 TO FIRST-VERB-SW.
           IF COPY-SW = 2     MOVE 'V' TO RECV (1).
           GO TO NOT-VERB.
       NEW-LINE-VERB.
           IF FIRST-VERB-SW = 0 AND
               FIRST-WORD-SW = 0
               MOVE 'V' TO RECV (1)
                MOVE 1 TO FIRST-WORD-SW.
           IF FIRST-VERB-SW = 0
               MOVE 1 TO FIRST-VERB-SW
               GO TO NOT-VERB.
           GO TO NEW-LINE-1.
       END-LINE.
           MOVE W1 TO CI-IN.
       L-EXIT.
           EXIT.
       MOVE-LIT.
           ADD 1 TO SUB2.
           MOVE SND (SUB3) TO RECV (SUB2).
       MOVE-L1.
           ADD 1 TO SUB3.
           IF SND (SUB3) = QUOTE GO TO MAYBE-END-LIT.
           ADD 1 TO SUB2.
           MOVE SND (SUB3) TO RECV (SUB2).
           GO TO MOVE-L1.
       MAYBE-END-LIT.
           ADD 1 TO SUB2.
           MOVE SND (SUB3) TO RECV (SUB2).
           ADD 1 TO SUB3.
           IF SUB3 = 67 GO TO LIT-EXIT.
           IF SND (SUB3) NOT = QUOTE
               ADD 1 TO SUB2
      *        MOVE SND (SUB3) TO RECV (SUB2)
               GO TO LIT-EXIT.
           ADD 1 TO SUB2.
           MOVE SND (SUB3) TO RECV (SUB2).
           ADD 1 TO SUB3.
           IF SUB3 = 67 GO TO LIT-EXIT.
           IF SND (SUB3) NOT = QUOTE
               COMPUTE SUB3 = SUB3 - 1
               GO TO MOVE-L1.
           ADD 1 TO SUB2.
           MOVE SND (SUB3) TO RECV (SUB2).
       LIT-EXIT.
           EXIT.
       SCAN-LINE.
           MOVE SUB1 TO SUB4.
           MOVE 0 TO BLD-SW.
       SCAN-1.
           ADD 1 TO SUB4.
           IF SUB4 = 67 GO TO SCAN-EXIT.
           IF SND (SUB4) = ' ' GO TO SCAN-1.
           MOVE 1 TO BLD-SW.
       SCAN-EXIT.
           EXIT.
       ASTER-ROUTE.
           IF FRST-ASTR = 0 WRITE VERBOUTX
               MOVE 1 TO FRST-ASTR.
           PERFORM WRITE-VO.
       SHIFT-1.
           MOVE 66 TO SUB1.
           MOVE 65 TO SUB2.
       SHIFT-IT.
           MOVE IN-TEXT (SUB2) TO IN-TEXT (SUB1).
           COMPUTE SUB1 = SUB1 - 1.
           COMPUTE SUB2 = SUB2 - 1.
           IF SUB2 > 4 GO TO SHIFT-IT.
           MOVE ' ' TO IN-TEXT (5).
       SHIFT-EXIT.
           EXIT.
        CI SECTION.


       START-ID-DIV.
      *    ROUTINE TO DO THE IDENTIFICATION DIVISION CONVERSION.
           MOVE 1 TO A C B Z.
           MOVE 0 TO X Y PROC-SW COPY-SW SUB1 SUB2 SUB3.
           MOVE SPACES TO FOUND CO-SWITCH BLNKS.
           MOVE 0 TO REMARKS-SW.
           OPEN INPUT VO.
           OPEN OUTPUT LO SO.
           ENTER GETCOM GET-AREA.
           MOVE HO-DA-YR TO HDATE.
           PERFORM HEADERS.
       READ-ID.
           MOVE SPACES TO CI-REC.
           READ VO INTO CI-REC AT END GO TO PREMATURE-END.
           MOVE XSEQ-OLD TO OUT-ID.
           IF ID-ASTER = '/' AND REC-CI NOT = BLNKS
               PERFORM SLASH-PUT.
           IF  ID-ASTER = '/' OR  REC-CI = BLNKS
               OR ID-ASTER = '*' MOVE CI-REC TO OUT-BODY
           PERFORM PRINT-IT
           MOVE SPACE TO OUT-ASTER
           GO TO READ-ID.
       ID-LOOP.
           IF ID-FIRST = 'IDENTIFIC'
               OR ID-FIRST = ' IDENTIFI'
               MOVE 1 TO COPY-SW
               MOVE CI-REC TO OUT-BODY
               PERFORM PRINT-IT
               GO TO READ-ID.
           IF COPY-SW = 0 GO TO CONT-DATA-DIV.
           IF ID-AREA-A NOT = '    '
               MOVE 0 TO ID-SW.
           IF ID-FIRST = 'PROGRAM-I'
               MOVE 1 TO ID-SW.
           IF ID-SW = 1 PERFORM ID-REMOVE-QUOTES.
           IF ID-FIRST = 'ENVIRONME'
               GO TO START-ENVIR-DIV.
           IF ID-AREA-A NOT = '    '
               MOVE 0 TO REMARKS-SW.
           IF ID-FIRST = 'REMARKS. '
               MOVE 1 TO REMARKS-SW.
           IF REMARKS-SW = 1
               MOVE '*' TO ID-ASTER.
           PERFORM PRINT-IT.
           MOVE ' ' TO ID-ASTER.
           MOVE ' ' TO OUT-ASTER.
           GO TO READ-ID.
       ID-REMOVE-QUOTES.
           MOVE 0 TO TALLE.
           INSPECT CI-REC TALLYING TALLE FOR ALL QUOTE.
           IF TALLE NOT = 0
           MOVE '<< QUOTES REMOVED >>' TO E-MSG
           INSPECT CI-REC REPLACING ALL QUOTE BY ' '.
      *     END OF IDENTIFICATION SECTION PROCESSING.
       PRINT-IT.
           IF OUT-ASTER = 'V' MOVE ' ' TO OUT-ASTER.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL 'SEEK '.
           IF TALLE NOT = 0
             MOVE '*' TO OUT-ASTER
             MOVE '<<<SEEK STMT CANNOT BE CONVERTED>>' TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL 'LINE NEXT PAGE'.
           INSPECT OUT-TEXT TALLYING TALLE FOR
              ALL 'LINE NUMBER NEXT PAGE'.
           INSPECT OUT-TEXT TALLYING TALLE FOR
              ALL 'LINE IS NEXT PAGE'.
           INSPECT OUT-TEXT TALLYING TALLE FOR
              ALL 'LINE NUMBER IS NEXT PAGE'.
           IF TALLE NOT = 0
              MOVE '<<<LINE NEXT PAGE CANNOT BE CONVERTED>>>' TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE
             FOR ALL 'SOURCE SELECTED '.
           IF TALLE NOT = 0
             MOVE '<<<SOURCE SELECTED CANNOT BE CONVERTED>>>'
                TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE
             FOR ALL 'SOURCE IS SELECTED '.
           IF TALLE NOT = 0
             MOVE '<<<SOURCE SELECTED CANNOT BE CONVERTED>>' TO E-MSG.
           MOVE 0 TO TALLE.
           IF TALLE NOT = 0
              MOVE '<<<TRACE STMT CANNOT BE CONVERTED>>>' TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL 'RESET TRACE'.
           IF TALLE NOT = 0
             MOVE '<<<TRACE STMT CANNOT BE CONVERTED>>' TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE
             FOR ALL 'EXHIBIT CHANGED '.
           IF TALLE NOT = 0
             MOVE '<<<EXHIBIT CHANGED CANNOT BE CONVERTED>>' TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL 'USING '.
           INSPECT OUT-TEXT TALLYING W FOR ALL 'CALL '.
           IF (TALLE NOT = 0) AND (W NOT = 0)
           MOVE '<<WARNING: PARAMS MUST BE 01 OR 77 LEVEL>>'
              TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' CODE '.
           IF TALLE NOT = 0
             INSPECT OUT-TEXT REPLACING ALL ' WITH ' BY '      '
             MOVE '<<<CODE MUST BE 2-CHAR NONNUMERIC LITERAL>>>'
                TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR
               ALL 'SET LINE-COUNTER '.
           IF TALLE NOT = 0
             MOVE '<<<<LINE-COUNTER CANNOT BE RESET>>>>' TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' SET '.
           IF TALLE NOT = 0
              MOVE 1 TO SET-SW.
           IF SET-SW = 1
              MOVE 0 TO TALLE
              INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' LINE-COUNTER '
              IF TALLE NOT = 0
                 MOVE 0 TO SET-SW
                 MOVE '<<<<LINE-COUNTER CANNOT BE RESET>>>>' TO E-MSG
              ELSE
                 INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' TO '
                 INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' UP '
                 INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' DOWN '
                 IF TALLE NOT = 0
                    MOVE 0 TO SET-SW.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' CONTROL '.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' CONTROLS '.
           IF TALLE NOT = 0
              MOVE 1 TO CONTROL-SW.
           IF CONTROL-SW = 1
              MOVE 0 TO TALLE
              INSPECT OUT-TEXT TALLYING TALLE FOR ALL '('
              IF TALLE NOT = 0
                 MOVE 0 TO CONTROL-SW
                 MOVE '<<<<CONTROLS MAY NOT BE SUBSCR. OR INDEXED>>>>'
                     TO E-MSG
              ELSE
                 INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' PAGE '
                 INSPECT OUT-TEXT TALLYING TALLE FOR ALL '.'
                 IF TALLE NOT = 0
                    MOVE 0 TO CONTROL-SW.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL 'EXHIBIT NAMED '.
           IF TALLE NOT = 0
              MOVE '<<<<CHANGE TO DISPLAY  DATANAME=  DATANAME>>>>'
                TO E-MSG.
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE FOR
               ALL ' COPY '.
           IF TALLE NOT = 0
               MOVE '<<<< WARNING COPY STATEMENT FOUND >>>>'
               TO E-MSG MOVE 0 TO TALLE.
           IF PROC-SW = 0
               MOVE 0 TO TALLE
               INSPECT OUT-TEXT TALLYING TALLE
               FOR ALL ' DEPENDING ON '
               IF TALLE NOT = 0
               MOVE '<<<< WARNING - VARIABLE LENGTH RECORDS >>>>'
           MOVE 0 TO TALLE.
           INSPECT OUT-TEXT TALLYING TALLE
               FOR ALL ' ELSE '.
           IF TALLE NOT = 0 AND ELSE-SW = 0
               MOVE 1 TO ELSE-SW ELSE
               IF TALLE NOT = 0 AND PX-SW > 1
               COMPUTE PX-SW = PX-SW - 1.
           MOVE 0 TO TALLE.
           IF OUT-TEXT NOT = BLNKS AND
               OUT-ASTER = ' ' AND
               PX-SW = 1     AND PROC-SW = 1
               MOVE OUT-TEXT TO XW2
               IF SEND-1 (65) = SPACE
                 AND SEND-1 (64) = SPACE
                 AND SEND-1 (63) = SPACE
                 AND SEND-1 (62) = SPACE
               MOVE SPACES TO XW1
               COMPUTE DIS = PX-SW * 4
               MOVE 1 TO STRT
               COMPUTE NUM = 65 - DIS
               PERFORM MOVMOD THRU MM-EXIT
               MOVE XW1 TO OUT-TEXT.
           IF OUT-TEXT NOT = BLNKS AND OUT-ASTER = SPACE
             AND PX-SW = 2 AND PROC-SW = 1
             MOVE OUT-TEXT TO XW2
             IF SEND-1 (65) = SPACE
               AND SEND-1 (64) = SPACE
               AND SEND-1 (63) = SPACE
               AND SEND-1 (62) = SPACE
               AND SEND-1 (61) = SPACE
               AND SEND-1 (60) = SPACE
               AND SEND-1 (59) = SPACE
               AND SEND-1 (58) = SPACE
               MOVE SPACES TO XW1
               COMPUTE DIS = PX-SW * 4
               MOVE 1 TO STRT
               COMPUTE NUM = 65 - DIS
               PERFORM MOVMOD THRU MM-EXIT
               MOVE XW1 TO OUT-TEXT.
           IF OUT-TEXT NOT = BLNKS AND OUT-ASTER = SPACE
              AND PX-SW = 3 AND PROC-SW = 1
              MOVE OUT-TEXT TO XW2
                 AND SEND-1 (64) = SPACE
                 AND SEND-1 (63) = SPACE
                 AND SEND-1 (62) = SPACE
                 AND SEND-1 (61) = SPACE
                 AND SEND-1 (60) = SPACE
                 AND SEND-1 (59) = SPACE
                 AND SEND-1 (58) = SPACE
                 AND SEND-1 (57) = SPACE
                 AND SEND-1 (56) = SPACE
                 AND SEND-1 (55) = SPACE
                 AND SEND-1 (54) = SPACE
                 MOVE SPACES TO XW1
                 COMPUTE DIS = PX-SW * 4
                 MOVE 1 TO STRT
                 COMPUTE NUM = 65 - DIS
                 PERFORM MOVMOD THRU MM-EXIT
                 MOVE XW1 TO OUT-TEXT.
           IF OUT-TEXT = BLNKS AND OUT-ASTER = SPACE
              AND PX-SW > 3 AND PROC-SW = 1
              MOVE OUT-TEXT TO XW2
              IF SEND-1 (65) = SPACE
                 AND SEND-1 (64) = SPACE
                 AND SEND-1 (63) = SPACE
                 AND SEND-1 (62) = SPACE
                 AND SEND-1 (61) = SPACE
                 AND SEND-1 (60) = SPACE
                 AND SEND-1 (59) = SPACE
                 AND SEND-1 (58) = SPACE
                 AND SEND-1 (57) = SPACE
                 AND SEND-1 (56) = SPACE
                 AND SEND-1 (55) = SPACE
                 AND SEND-1 (54) = SPACE
                 AND SEND-1 (53) = SPACE
                 AND SEND-1 (52) = SPACE
                 AND SEND-1 (51) = SPACE
                 AND SEND-1 (50) = SPACE
                 MOVE SPACES TO XW1
                 COMPUTE DIS = PX-SW * 4
                 MOVE 1 TO STRT
                 COMPUTE NUM = 65 - DIS
                 PERFORM MOVMOD THRU MM-EXIT
                 MOVE XW1 TO OUT-TEXT.
           IF OUT-TEXT NOT = BLNKS AND
               (OUT-ASTER = ' ' OR OUT-ASTER = '-') AND
               PROC-SW = 1
               INSPECT OUT-TEXT TALLYING TALLE
               FOR ALL '.' IF TALLE NOT = 0
               MOVE 0 TO ELSE-SW
               MOVE 0 TO PX-SW ELSE
                   MOVE 0 TO TALLE
                   INSPECT OUT-TEXT TALLYING TALLE
                       FOR ALL ' IF '
                       IF TALLE NOT = 0
                           MOVE 0 TO ELSE-SW
                           ADD 1 TO PX-SW
                           ELSE IF PX-SW = 0 MOVE 1 TO PX-SW.
           IF PX-SW > 8 MOVE 8 TO PX-SW.
           IF SEL-SW = 1
               MOVE OUT-TEXT TO XW2
               MOVE SPACES TO XW1
               MOVE 4 TO DIS
               MOVE 1 TO STRT
               MOVE 61 TO NUM
               PERFORM MOVMOD THRU MM-EXIT
               MOVE XW1 TO OUT-TEXT.
           ADD 10 TO OUT-SEQ-NO SO-SEQ.
           MOVE 0 TO TALLE.
           IF PROC-SW = 0
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' COMP '
               REPLACING ALL ' COMP ' BY ' ?OMP '
           INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' COMP.'
               REPLACING ALL ' COMP.' BY ' ?OMP.'.
           IF TALLE NOT = 0 PERFORM COMP-MOVE THRU CC-EXIT.
           IF TALLE = 0 AND PROC-SW = 0
               INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' COMP-1 '
               REPLACING ALL ' COMP-1 ' BY ' ?OMP-1 '
               INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' COMP-1.'
               REPLACING ALL ' COMP-1.' BY ' ?OMP-1.'
               IF TALLE NOT = 0 PERFORM COMP-1-MOVE THRU CC-EXIT.
           IF TALLE = 0 AND PROC-SW = 0
               REPLACING ALL ' COMP-2 ' BY ' ?OMP-2 '
               INSPECT OUT-TEXT TALLYING TALLE FOR ALL ' COMP-2.'
               REPLACING ALL ' COMP-2.' BY ' ?OMP-2.'
               IF TALLE NOT = 0 PERFORM COMP-2-MOVE THRU CC-EXIT.
           IF TALLE = 0 AND PROC-SW = 0
               INSPECT OUT-TEXT TALLYING TALLE FOR
                   ALL ' COMPUTATIONAL '
               REPLACING ALL ' COMPUTATIONAL '
                   BY ' ?OMPUTATIONAL '
               INSPECT OUT-TEXT TALLYING TALLE FOR
                   ALL ' COMPUTATIONAL.'
               REPLACING ALL ' COMPUTATIONAL.'
                   BY ' ?OMPUTATIONAL.'
               IF TALLE NOT = 0 PERFORM COMP-U-MOVE THRU CC-EXIT.
           IF TALLE = 0 AND PROC-SW = 0
               INSPECT OUT-TEXT TALLYING TALLE FOR
                   ALL ' COMPUTATIONAL-1 '
               REPLACING ALL ' COMPUTATIONAL-1 '
                   BY ' ?OMPUTATIONAL-1 '
               INSPECT OUT-TEXT TALLYING TALLE FOR
                   ALL ' COMPUTATIONAL-1.'
               REPLACING ALL ' COMPUTATIONAL-1.'
                   BY ' ?OMPUTATIONAL-1.'
               IF TALLE NOT = 0 PERFORM COMP-U-1-MOVE THRU CC-EXIT.
           IF TALLE = 0 AND PROC-SW = 0
               INSPECT OUT-TEXT TALLYING TALLE FOR
                   ALL ' COMPUTATIONAL-2 '
               REPLACING ALL ' COMPUTATIONAL-2 '
                   BY ' ?OMPUTATIONAL-2 '
               INSPECT OUT-TEXT TALLYING TALLE FOR
                   ALL ' COMPUTATIONAL-2.'
               REPLACING ALL ' COMPUTATIONAL-2.'
                   BY ' ?OMPUTATIONAL-2.'
               IF TALLE NOT = 0 PERFORM COMP-U-2-MOVE THRU CC-EXIT.
           MOVE 0 TO TALLE.
      *        REPLACING ALL '"' BY '^'.
      *    INSPECT LO-OUT REPLACING ALL QUOTE BY '"'.
      *    IF TALLE NOT = 0
      *        INSPECT LO-OUT REPLACING ALL '^' BY QUOTE.
           WRITE LO-REC FROM LO-OUT.
           MOVE SPACES TO E-MSG.
           IF SO-ASTER = 'F' MOVE ' ' TO SO-ASTER.
           IF NO-SO = '0'
           MOVE OUT-BODY TO SO-TEXT
            MOVE OUT-ID TO SO-OUT-ID
           COMPUTE EDIT-KEY = SO-SEQ * 10
           WRITE SOURCE-OUT FROM SO-OUT
               INVALID KEY DISPLAY 'PROBLEM IN CONVERTER   LINE='
               SO-SEQ UPON PRINTER STOP RUN.
           ADD 1 TO LINE-NO.
                MOVE '0' TO NO-SO.
           IF LINE-NO > 36 PERFORM HEADERS.
       HEADERS.
           ADD 1 TO PAGE-NO.
           MOVE PAGE-NO TO H1-PGNO.
           WRITE LO-REC FROM HEAD1 AFTER TOPP.
           MOVE SPACES TO LO-REC.
           WRITE LO-REC.
           WRITE LO-REC.
           MOVE 2 TO LINE-NO.
       END-OF-RUN.
           IF EDMS-SW2 = 1
               MOVE SPACES TO OUT-BODY
               MOVE '<< EDMS ENTER  ROUTINES FOUND >>'
               TO E-MSG
               WRITE LO-REC FROM LO-OUT AFTER  2
               MOVE SPACES TO LO-REC
               WRITE LO-REC AFTER 1.
           CLOSE VO SO LO.
           STOP RUN.
       PREMATURE-END.
           GO TO END-OF-RUN.
      *     E N V I R O N M E N T  D I V I S I O N **************************


       START-ENVIR-DIV.
      *     ROUTINE TO DO THE ENVIRONMENT DIVISION CONVERSION.
           MOVE REC-CI TO OUT-TEXT.
           PERFORM PRINT-IT.
           MOVE 'CONFIGURATION SECTION.' TO OUT-TEXT.
           PERFORM PRINT-IT.
           MOVE 'SOURCE-COMPUTER. LEVEL-66-ASCII.' TO OUT-TEXT.
           MOVE '<< GENERATED >>' TO E-MSG
           PERFORM PRINT-IT.
           MOVE 'OBJECT-COMPUTER. LEVEL-66-ASCII.' TO OUT-TEXT.
           MOVE '<< GENERATED >>' TO E-MSG.
           PERFORM PRINT-IT.
       READ-ENVIR.
           MOVE SPACES TO CI-REC.
           READ VO INTO CI-REC AT END GO TO PREMATURE-END.
           MOVE XSEQ-OLD TO OUT-ID.
               PERFORM CHK-TO-PUT-UPON
           IF ID-ASTER = '/' AND REC-CI NOT = BLNKS
               PERFORM SLASH-PUT.
           IF (ID-ASTER = '/' AND REC-CI = BLNKS)
               OR ID-ASTER = '*' MOVE CI-REC TO OUT-BODY
           PERFORM PRINT-IT
           MOVE SPACE TO OUT-ASTER SO-ASTER
           GO TO READ-ENVIR.
           IF COMM-SW = 0
               MOVE 0 TO TALLE
               INSPECT REC-CI TALLYING TALLE
               FOR ALL 'COMMON-STORAGE'
               IF TALLE NOT = 0
                   MOVE 0 TO TALLE
                   MOVE 1 TO COMM-SW
                   GO TO COMM-STORE-ROUTE.
           IF COMM-SW = 1
               MOVE 0 TO TALLE
               INSPECT REC-CI TALLYING TALLE
               FOR ALL 'PROCEDURE DIV'
               INSPECT REC-CI TALLYING TALLE
                FOR ALL 'REPORT SECTION'
               IF TALLE NOT = 0 OR ID-FIRST = 'PROCEDURE'
                   MOVE 0 TO TALLE
                   MOVE 2 TO COMM-SW
                   PERFORM BLOCK-CLAUSE-ROUTE
                       THRU BC-EXIT.
           IF I-O-SW = 0
               MOVE 0 TO TALLE
               INSPECT REC-CI TALLYING TALLE
               FOR ALL ' OPEN '
               INSPECT REC-CI TALLYING TALLE
               FOR ALL ' USE '
               IF TALLE NOT = 0
                   MOVE 1 TO I-O-SW.
           IF I-O-SW = 1
               MOVE 0 TO TALLE
               INSPECT REC-CI TALLYING TALLE
               FOR ALL ' REVERSED'
               IF TALLE NOT = 0 MOVE
               '<<<<<<< OPEN REVERSED CAN NOT BE CONVERTED >>>>>>>'
               TO E-MSG.
           IF I-O-SW = 1
               MOVE 0 TO TALLE
                   PERFORM I-O-ROUTE THRU I-O-EXIT
               INSPECT REC-CI TALLYING TALLE
                   FOR ALL '.'
                   IF TALLE NOT = 0
                   MOVE 0 TO I-O-SW.
           MOVE 0 TO TALLE.
           INSPECT REC-CI TALLYING TALLE
               FOR ALL 'INITIATE ALL'.
           INSPECT REC-CI TALLYING TALLE
               FOR ALL 'TERMINATE ALL'.
           IF TALLE NOT = 0 PERFORM ALL-ROUTE.
       CK-TYPE-REC.
           IF ID-FIRST = 'CONFIGURA' GO TO READ-ENVIR.
           IF ID-FIRST = 'SOURCE-CO' GO TO READ-ENVIR.
           IF ID-FIRST = 'OBJECT-CO' GO TO READ-ENVIR.
           IF ID-FIRST = 'SPECIAL-N' GO TO SPECIAL-N-ROUTE.
           IF ID-FIRST = 'INPUT-OUT' GO TO INPUT-OUT-ROUTE.
           IF ID-FIRST = 'FILE-CONT' GO TO FILE-CNTL-ROUTE.
           IF ID-FIRST = 'DATA DIVI' GO TO START-DATA-DIV.
           GO TO READ-ENVIR.
       SPECIAL-N-ROUTE.
           MOVE '1' TO XSPECIAL-NAME-SWITCH.
           MOVE 0 TO TALLE.
           INSPECT CI-REC TALLYING TALLE
               FOR ALL '.'.
           IF TALLE > 1
               INSPECT CI-REC REPLACING ALL '.'
               BY ' ' AFTER INITIAL '.'.
           INSPECT CI-REC REPLACING ALL QUOTE BY '"'.
           MOVE CI-REC TO OUT-BODY.
           MOVE ' ' TO OUT-ASTER.
      *    GO TO READ-NEXT-SN-REC.
       READ-NEXT-SN-REC.
           MOVE SPACES TO CI-REC XSAVE-A-LINE SAVED-WORD.
           READ VO INTO CI-REC AT END GO TO PREMATURE-END.
           MOVE XSEQ-OLD TO OUT-ID.
      *    IF ID-AREA-A = SPACES MOVE CI-REC TO SCANNER-REC
      *     MOVE 5 TO X Y MOVE 0 TO Z GO TO FIND-A-WORD.
           IF ID-AREA-A NOT = SPACES
            GO TO CK-TYPE-REC.
           MOVE 0 TO TALLE.
           INSPECT REC-CI TALLYING TALLE FOR ALL ' PRINTER IS '.
           IF TALLE NOT = 0
              MOVE 0 TO PUT-SYSOUT
              INSPECT REC-CI REPLACING ALL ' PRINTER IS '
                 BY ' SYSOUT IS  '
              MOVE '<< PRINTER CHANGED TO SYSOUT >>' TO E-MSG.
           INSPECT REC-CI REPLACING ALL '.' BY ' '.
       WRITE-SN-REC.
           MOVE REC-CI       TO OUT-TEXT.
           INSPECT OUT-TEXT REPLACING ALL QUOTE BY '"'.
           PERFORM PRINT-IT.
           GO TO READ-NEXT-SN-REC.
       ILLEGAL-TEXT.
           MOVE CI-REC TO OUT-BODY.
           MOVE '*' TO OUT-ASTER.
           MOVE '<< ILLEGAL TEXT >>' TO E-MSG.
           PERFORM PRINT-IT.
           MOVE ' ' TO OUT-ASTER.
       REMOVE-QUOTES.
           ADD 1 TO X.
           IF X = 67 GO TO QUOTE-EXIT.
           IF REC-BYTE (X) = QUOTE
             MOVE SPACE TO REC-BYTE (X).
           GO TO REMOVE-QUOTES.
       QUOTE-EXIT. EXIT.
       INPUT-OUT-ROUTE.
           MOVE 0 TO I-O-SWX.
           IF XSPECIAL-NAME-SWITCH = SPACE
           MOVE ' SPECIAL-NAMES.  1  IS TOPP ' TO TEXT-OUT
           MOVE QUOTE TO BUILD-TEXT (17)
           MOVE QUOTE TO BUILD-TEXT (19)
           MOVE '<< GENERATED >>'  TO E-MSG
           PERFORM PRINT-IT.
           IF PUT-SYSOUT = 1
           MOVE PRNTR-LINE TO OUT-TEXT
           MOVE '<< GENERATED >>' TO E-MSG
           PERFORM PRINT-IT.
           COMPUTE SEQ-SAV = SO-SEQ + 2.
           MOVE SPACES TO SCANNER-REC
           MOVE '.' TO REC-BYTE (6)
           MOVE SCANNER-REC TO OUT-BODY
           PERFORM PRINT-IT
           MOVE SPACES TO OUT-BODY.
           MOVE SPACE TO XSPECIAL-NAME-SWITCH.
       I-O-R.
           MOVE CI-REC TO OUT-BODY.
           PERFORM PRINT-IT.
           GO TO READ-ENVIR.
      *  F I L E    C O N T R O L   R O U T I N E  *********************


       FILE-CNTL-ROUTE.
           IF I-O-SWX = 1
               PERFORM INPUT-OUT-ROUTE
               MOVE 0 TO I-O-SWX.
           MOVE CI-REC TO OUT-BODY.
           PERFORM PRINT-IT.
       FC-READ-LOOP.
      *  FIND TROUBLE VERBS AND BRANCH TO PROPER ROUTINE ************
           MOVE 0 TO SEL-SW.
           PERFORM READ-ENVIR.
           IF ID-FIRST = 'DATA DIVI' GO TO START-DATA-DIV.
           MOVE CI-REC TO IDENTIFY-VERB SCANNER-REC.
           MOVE 1 TO X.
           IF V-7 = 'SELECT ' PERFORM SCAN-COMMA THRU END-COMMA
           PERFORM CK-RESERVED THRU RESERVE-END
           GO TO FC-PRINT-ROUTE.
           MOVE 1 TO SEL-SW.
           IF  V-7 = 'ASSIGN ' MOVE 12 TO X GO TO FC-ASSIGN.
           IF V-12 = 'ORGANIZATION'
             PERFORM ILLEGAL-TEXT
           PERFORM PERIOD-SCAN THRU END-SCAN
             GO TO FC-READ-LOOP.
           IF  V-6 = 'APPLY ' PERFORM ILLEGAL-TEXT GO TO FC-READ-LOOP.
           IF V-7 = 'STATUS ' PERFORM ILLEGAL-TEXT PERFORM PERIOD-SCAN
            THRU END-SCAN
             GO TO FC-READ-LOOP.
      *    IF V-7 = 'RECORD ' PERFORM ILLEGAL-TEXT PERFORM PERIOD-SCAN
      *    THRU END-SCAN
      *    GO TO FC-READ-LOOP.
           IF V-9 = 'PASSWORD ' PERFORM ILLEGAL-TEXT PERFORM PERIOD-SCAN
           THRU END-SCAN
           GO TO FC-READ-LOOP.
           IF V-7 = 'ACTUAL ' GO TO FC-RECORD.
           IF V-5 = 'COPY ' GO TO FC-COPY.
            IF V-8 = 'RESERVE ' OR
               V-9 = 'MULTIPLE ' OR
               V-12 = 'FILE-LIMITS ' OR
               V-11 = 'PROCESSING ' OR
               V-11 = 'FILE-LIMIT '
               PERFORM ILLEGAL-TEXT
           PERFORM PERIOD-SCAN THRU END-SCAN GO TO FC-READ-LOOP.
           IF V-7 = 'ACCESS ' GO TO FC-ACCESS.
       FC-PRINT-ROUTE.
           MOVE SPACES TO XSAVE-A-LINE SCANNER-REC.
           MOVE CI-REC TO SCANNER-REC.
           MOVE 0 TO X A.
       FC-SCAN-LOOP.
           ADD 1 TO X A.
           IF X > 66 GO TO FC-PRINT-NOW.
           IF REC-BYTE (X) = ',' MOVE ' ' TO REC-BYTE (X).
           MOVE REC-BYTE (X) TO XSAVE-LINE  (A).
           GO TO FC-SCAN-LOOP.
       FC-PRINT-NOW.
           MOVE XSAVE-A-LINE TO OUT-BODY.
           PERFORM PRINT-IT.
           MOVE SPACES TO OUT-BODY.
           GO TO FC-READ-LOOP.
       FC-ASSIGN.
      *   CHANGE LINE TO 'ASSIGN TO DISC' **************************
           ADD 1 TO X.
           IF X > 66 GO TO FC-ASSIGN-NP.
           IF REC-BYTE (X) = '.' GO TO FC-ASSIGN-P.
           GO TO FC-ASSIGN.
       FC-ASSIGN-NP.
      *   MUST NOT HAVE PERIOD AFTER DISC  **********************
           IF REC-CI = '    ASSIGN TO PRINTER' OR
              REC-CI = '    ASSIGN PRINTER'
                  MOVE '<<<WARNING: VFC CODES NOW DIFFERENT>>>'
                         TO E-MSG
                  PERFORM PRINT-IT
                  GO TO FC-READ-LOOP.
            IF REC-CI = '    ASSIGN TO DISC' OR
               REC-CI = '    ASSIGN DISC' OR
              REC-CI = '    ASSIGN TO MAGNETIC-TAPE'  OR
               REC-CI = '    ASSIGN MAGNETIC-TAPE' OR
              REC-CI = '    ASSIGN TO CARD-PUNCH' OR
               REC-CI = '    ASSIGN CARD-PUNCH' OR
               REC-CI = '    ASSIGN CARD-READER' OR
              REC-CI = '    ASSIGN TO CARD-READER'
               MOVE REC-CI TO OUT-TEXT
               PERFORM PRINT-IT
               GO TO FC-READ-LOOP.
           PERFORM ILLEGAL-TEXT.
           MOVE 'ASSIGN TO DISK' TO OUT-12.
           MOVE '<< GENERATED >>' TO E-MSG.
           PERFORM PRINT-IT.
           GO TO FC-READ-LOOP.
       FC-ASSIGN-P.
      *   MUST HAVE PERIOD AFTER DISC.  ************************
           IF REC-CI = '    ASSIGN TO PRINTER.' OR
              REC-CI = '    ASSIGN PRINTER.'
                MOVE '    ASSIGN TO PRINTER-F.' TO OUT-TEXT
                MOVE '<<<WARNING: VFC CODES NOW DIFFERENT>>>'
                      TO E-MSG
                PERFORM PRINT-IT
                GO TO FC-READ-LOOP.
           IF REC-CI  = '    ASSIGN TO DISC.' OR
              REC-CI = '    ASSIGN DISC.' OR
              REC-CI = '    ASSIGN TO MAGNETIC-TAPE.'  OR
              REC-CI = '    ASSIGN MAGNETIC-TAPE.' OR
              REC-CI = '    ASSIGN TO CARD-PUNCH.' OR
              REC-CI = '    ASSIGN CARD-PUNCH.' OR
              REC-CI = '    ASSIGN CARD-READER.' OR
               MOVE REC-CI TO OUT-TEXT
               PERFORM PRINT-IT
               GO TO FC-READ-LOOP.
           PERFORM ILLEGAL-TEXT.
           MOVE 'ASSIGN TO DISK.' TO OUT-12.
           MOVE '<< GENERATED >>' TO E-MSG.
           PERFORM PRINT-IT.
           GO TO FC-READ-LOOP.
       FC-COPY.
      *   QUOTES MUST BE REMOVED FROM 'COPY'  *******************
           MOVE 10 TO X.
           PERFORM REMOVE-QUOTES THRU QUOTE-EXIT.
           MOVE SCANNER-REC TO OUT-BODY.
           MOVE '<< QUOTES REMOVED >>' TO E-MSG.
           PERFORM PRINT-IT.
           GO TO FC-READ-LOOP.
       FC-ACCESS.
      *   CHECK FOR KEYWORD 'IS'  ******************************
           IF REC-BYTE (13) = 'I' AND REC-BYTE (14) = 'S'
           PERFORM RANDOM-ROUTE-16
           MOVE 14 TO X
           GO TO FC-IS-OK.
           IF REC-BYTE (18) = 'I' AND REC-BYTE (19) = 'S'
           PERFORM RANDOM-ROUTE-21
           MOVE 20 TO X
           GO TO FC-IS-OK.
      *   'IS' MUST BE INSERTED , NOW FIND WHICH BYTE TO START INSERT ****
           MOVE 5 TO X Y.
           MOVE SPACES TO TEXT-OUT.
           IF REC-BYTE (13) = 'M' AND REC-BYTE (14) = 'O'
           AND REC-BYTE (15) = 'D' AND REC-BYTE (16) = 'E'
           MOVE 18 TO C ELSE MOVE 13 TO C.
           IF REC-BYTE (13) = 'R' MOVE '1' TO RANDOM-SWITCH.
           IF REC-BYTE (18) = 'R' MOVE '1' TO RANDOM-SWITCH.
       FC-IS-MOVE-LOOP.
           ADD 1 TO X Y.
           IF X = C PERFORM FC-MOVE-IS.
           IF X > 68 MOVE TEXT-OUT TO SCANNER-REC
           MOVE '<< KEYWORD  IS  HAS BEEN ADDED >>' TO E-MSG
           GO TO FC-IS-OK.
           IF REC-BYTE (X) = ',' MOVE ' ' TO BUILD-TEXT (Y) ELSE
           MOVE REC-BYTE (X) TO BUILD-TEXT (Y).
           GO TO FC-IS-MOVE-LOOP.
       FC-MOVE-IS.
           MOVE 'I' TO BUILD-TEXT (Y).
           ADD 1 TO Y.
           MOVE 'S' TO BUILD-TEXT (Y).
           ADD 2 TO Y.
       FC-IS-OK.
           ADD 1 TO X.
           IF REC-BYTE (X) = ',' MOVE ' ' TO REC-BYTE (X).
           IF X > 66 GO TO FC-IS-CONT.
           GO TO FC-IS-OK.
       FC-IS-CONT.
           MOVE SCANNER-REC TO OUT-BODY.
           PERFORM PRINT-IT.
           GO TO FC-READ-LOOP.
       RANDOM-ROUTE-16.
           IF REC-BYTE (16) = 'R' MOVE '1' TO RANDOM-SWITCH.
       RANDOM-ROUTE-21.
           IF REC-BYTE (21) = 'R' MOVE '1' TO RANDOM-SWITCH.
       FC-ACTUAL.
      *   CHECK FOR KEYWORD 'IS'  *******************************
           IF REC-BYTE (13) = 'I' AND REC-BYTE (14) = 'S'
           GO TO FC-IS-OK.
           IF REC-BYTE (17) = 'I' AND REC-BYTE (18) = 'S'
           GO TO FC-IS-OK.
      *   'IS' MUST BE INSERTED, NOW FIND WHICH BYTE TO START INSERT ****
           MOVE 5 TO X Y.
           MOVE SPACES TO TEXT-OUT.
           IF REC-BYTE (13) = 'K' AND REC-BYTE (14) = 'E'
           AND REC-BYTE (15) = 'Y'
           MOVE 17 TO C ELSE
           MOVE 13 TO C.
           GO TO FC-IS-MOVE-LOOP.
       FC-RECORD.
           MOVE ' ' TO RANDOM-SWITCH.
           MOVE '<< GENERATED >>' TO E-MSG.
           MOVE ORGAN-LINE TO OUT-TEXT.
           PERFORM PRINT-IT.
           MOVE SPACES TO TEXT-OUT.
           MOVE 'R' TO BUILD-TEXT (6)
           MOVE 'E' TO BUILD-TEXT (7).
           MOVE 'C' TO BUILD-TEXT (8).
           MOVE 'O' TO BUILD-TEXT (9).
           MOVE 'R' TO BUILD-TEXT (10).
           MOVE 'D' TO BUILD-TEXT (11).
           MOVE '<< ACTUAL REPLACED WITH RECORD >>'
             TO E-MSG.
           MOVE 12 TO Y.
           MOVE 12 TO X.
           IF V-9 = 'SYMBOLIC ' MOVE 14 TO X.
           IF V-8 = 'NOMINAL ' MOVE 13 TO X.
       ACTUAL-LOOP.
           ADD 1 TO X Y.
           IF X > 66 MOVE TEXT-OUT TO SCANNER-REC
             GO TO FC-ACTUAL.
           IF REC-BYTE (X) = ',' MOVE ' ' TO BUILD-TEXT (Y) ELSE
           MOVE REC-BYTE (X) TO BUILD-TEXT (Y).
           GO TO ACTUAL-LOOP.
       PERIOD-SCAN.
           ADD 1 TO X.
           IF X > 66 GO TO END-SCAN.
           IF REC-BYTE (X) = '.'
           MOVE SPACES TO SCANNER-REC
           MOVE '.' TO REC-BYTE (6)
           MOVE SCANNER-REC TO OUT-BODY
           PERFORM PRINT-IT
           MOVE SPACES TO OUT-BODY
           GO TO END-SCAN.
           GO TO PERIOD-SCAN.
       END-SCAN. EXIT.
       SCAN-COMMA.
           ADD 1 TO X.
           IF X > 66 GO TO END-COMMA.
           IF REC-BYTE (X) = ','
           MOVE SPACE TO REC-BYTE (X)
           MOVE SCANNER-REC TO CI-REC.
           GO TO SCAN-COMMA.
       END-COMMA. EXIT.
       CK-RESERVED.
           MOVE 0 TO A.
           MOVE 12 TO X.
           MOVE SPACES TO DATA-SAVED-WORD.
       RESERVE-LOOP.
           ADD 1 TO X A.
           IF X > 40 GO TO RESERVE-END.
           IF REC-BYTE (X) = SPACE GO TO RESERVE-LOOK.
           MOVE REC-BYTE (X) TO DATA-SAVE-WORD (A).
           MOVE A TO SAV-SUB.
           GO TO RESERVE-LOOP.
       RESERVE-LOOK.
           PERFORM LOOK-PROC-RESERVE THRU PROC-LOOK-END
           MOVE 0 TO Z.
           IF FOUND-DATA NOT = 'F' GO TO RESERVE-END.
           MOVE SPACES TO FOUND-DATA.
           MOVE CI-REC TO OUT-BODY.
           MOVE '<< RESERVED WORD CHANGED (Z ADDED) >>'  TO E-MSG.
           MOVE SPACES TO OUT-BODY.
           COMPUTE I = X - 1.
           MOVE X TO H.
           MOVE SAV-SUB TO K.
           MOVE 0 TO J.
           PERFORM MOVE-ZX THRU MOVE-ZX-EXIT.
           MOVE 'Z' TO REC-BYTE  (H).
           MOVE SCANNER-REC TO CI-REC.
       RESERVE-END. EXIT.
      *      D A T A   D I V I S I O N  ***************************************


       START-DATA-DIV.
           IF I-O-SWX = 1
               PERFORM INPUT-OUT-ROUTE
               MOVE 0 TO I-O-SWX.
           MOVE REC-CI TO OUT-TEXT.
           PERFORM PRINT-IT.
           MOVE SPACES TO OUT-BODY.
       CONT-DATA-DIV.
           MOVE ' ' TO OUT-ASTER.
           MOVE ' ' TO DATA-LINE-END-SWTCH.
           MOVE SPACES TO IDENTIFY-VERB SCANNER-REC.
           IF COPY-SW = 0 AND ID-ASTER = 'V'
               MOVE 1 TO FST-READ
               MOVE SPACES TO OUT-BODY
               GO TO DD-READ-LOOP.
           IF COPY-SW NOT = 0
               PERFORM READ-ENVIR
               ELSE IF FRST-CPY = 1
                   PERFORM READ-ENVIR
                   ELSE MOVE 1 TO FRST-CPY.
           IF COPY-SW = 0 AND ID-ASTER = 'V'
               MOVE 1 TO FST-READ
               MOVE SPACES TO OUT-BODY
               GO TO DD-READ-LOOP.
           IF ID-FIRST = 'PROCEDURE' GO TO START-PROC-DIV.
           MOVE 1 TO X.
       FS-1ST-WORD.
      *    IF COPY-SW = 0
      *        INSPECT REC-CI TALLYING TALLE FOR ALL 'FD  '
      *        INSPECT REC-CI TALLYING TALLE FOR ALL 'RD  '
      *        INSPECT REC-CI TALLYING TALLE FOR ALL 'SD  '
      *        INSPECT REC-CI TALLYING TALLE FOR ALL '01  '
      *        IF TALLE = 0
      *            MOVE 1 TO FST-READ
      *            GO TO DD-READ-LOOP
      *            ELSE MOVE 1 TO COPY-SW.
      *   FIND TROUBLE VERB AND BRANCH TO PROPER ROUTINE  ***********
           MOVE CI-REC TO IDENTIFY-VERB  SCANNER-REC.
      *    IF V-6 = 'BLOCK ' PERFORM ILLEGAL-TEXT
      *    PERFORM PERIOD-SCAN THRU END-SCAN
      *      GO TO CONT-DATA-DIV.
           IF V-7 = 'REPORT ' OR
             V-8 = 'REPORTS ' MOVE '1' TO REPORT-WRITE-SW.
           IF IV3 = 'SD ' MOVE 1 TO SD-SWITCH.
           IF IV3 = 'FD ' MOVE 0 TO SD-SWITCH B
           MOVE 0 TO X Y   V S MOVE SPACES TO FD-SAVE-WORD
           MOVE 1 TO Z
           MOVE 0 TO FRST-VERB-SW
           MOVE SPACES TO FD-COMPARE-WORD LINE-SAVED
           GO TO FD-CHECK.
       FD-CK-RTN.
           IF V-6 = 'LABEL ' AND SD-SWITCH = 1
             PERFORM ILLEGAL-TEXT
             PERFORM PERIOD-SCAN THRU END-SCAN
             GO TO CONT-DATA-DIV.
      *   INITIALIZE AREAS AND SUBSCRIPTS ***
      *   X = CURRENT BYTE OF SOURCE INPUT RECORD ***
      *   C = POINTER TO NEXT BYTE OF SOURCE RECORD ***
      *   Z = USED TO CONTROL TABLE LOOKUP ***
      *   Y = COUNTER FOR LENGTH OF CURRENT DATA WORD ***
      *   A = CURRENT BYTE OF RECORD USED TO SAVE INPUT DATA ***
           MOVE SPACES TO XSAVE-A-LINE, SCANNER-REC, DATA-SAVED-WORD.
           MOVE CI-REC TO SCANNER-REC.
           MOVE 1 TO X.
           MOVE 0 TO Y A.
       DATA-WORD-SAVE-LOOP.
      *   FIND WORD TO COMPARE AGAINST ILLEGAL WORDS TABLE ***
           ADD 1 TO X Y A.
       DW-COMMA-LOOP.
           COMPUTE C = X + 1.
           IF REC-BYTE (X) = ',' AND REC-BYTE (C) = SPACE
           MOVE ' ' TO REC-BYTE (X)
           ADD 1 TO X GO TO DW-COMMA-LOOP.
           IF X > 66 GO TO DATA-LINE-ENDED.
           MOVE REC-BYTE (X) TO XSAVE-LINE (A).
      *    WORDS WITHIN QUOTES ARE OK ***
           IF REC-BYTE (X) = QUOTE
              MOVE '"' TO XSAVE-LINE (A)
              GO TO SCAN-QUOTE.
           IF REC-BYTE (X) = SPACE GO TO DATA-WORD-ENDED.
      *   START CC7 -- MUST BE AT LEAST CC12 ***
           IF REC-BYTE (X) = SPACE AND X IS < 6
               GO TO DATA-WORD-SAVE-LOOP.
      *   RESERVED WORDS ARE NOT > 14 BYTES ****
           IF Y > 14 GO TO DATA-READ-AND-CLEAR.
      *   PASSED ALL TESTS - LOAD WORD *******
           MOVE REC-BYTE (X) TO DATA-SAVE-WORD (Y).
           GO TO DATA-WORD-SAVE-LOOP.
       DATA-WORD-ENDED.
           IF DATA-SAVED-WORD = SPACE MOVE 0 TO Y
             GO TO DATA-WORD-SAVE-LOOP.
      *   HAVE WORD -- SEE IF IT IS A NON-ALLOWED RESERVE WORD ***
      *   STRIP PERIOD FROM WORD BEFORE LOOK-UP ***
           COMPUTE C = Y - 1.
           IF DATA-SAVE-WORD (C) = '.'
             MOVE SPACE TO DATA-SAVE-WORD (C)
           SUBTRACT 1 FROM A
             MOVE '1' TO PERIOD-FLAG.
           IF DATA-SAVED-WORD = 'JUSTIFIED    ' OR
             DATA-SAVED-WORD = 'JUST         '
             GO TO JUST-ROUTE.
           IF DATA-SAVED-WORD = 'COPY' GO TO COPY-ROUTE.
           IF DATA-SAVED-WORD = 'FILLER' GO TO FIL-ROUTE.
           IF DATA-SAVED-WORD = 'FILLER.' GO TO FIL-ROUTE-GROUP.
           GO TO CONT-DW-LOOK.
       JUST-ROUTE.
           GO TO CONT-DW-LOOK.
       FD-CHECK.
           ADD 1 TO X.
           IF REC-BYTE (X) = ',' ADD 1 TO S GO TO FD-CHECK.
           ADD 1 TO   Y S B.
           IF X > 65 OR FD-END-LINE = 1 MOVE 0 TO FD-END-LINE
           MOVE 0 TO B
           MOVE SPACES TO FD-SAVE-WORD SCANNER-REC
           PERFORM READ-ENVIR
           MOVE REC-CI TO SCANNER-REC
           MOVE 0 TO FRST-VERB-SW
           MOVE 0 TO X
           MOVE 1 TO S
           GO TO FD-CHECK.
           IF REC-BYTE (X) = '.' GO TO FD-PERIOD-FOUND.
           MOVE REC-BYTE (X) TO TOT-LINE (Y).
           MOVE REC-BYTE (X) TO FD-SAVED-WORD (B).
           IF REC-BYTE  (X) = SPACE AND REC-BYTE (S) = SPACE
               AND X > 6
           MOVE 1 TO FD-END-LINE
           GO TO FD-CK-WORD.
           IF REC-BYTE (X) = SPACE GO TO FD-CK-WORD ELSE
             GO TO FD-CHECK.
       FD-CK-WORD.
           IF FD-SAVE-WORD = 'FD'
             COMPUTE V = Y - 2
             GO TO FD-MOVE-V.
           IF FD-SAVE-WORD = 'BLOCK' MOVE 'Q' TO STATUS (Z)
             COMPUTE V = Y - 5
           GO TO FD-MOVE-V.
           IF FD-SAVE-WORD = 'RECORDING' MOVE 'Q' TO STATUS (Z)
           COMPUTE V = Y - 9
           GO TO FD-MOVE-V.
           IF FD-SAVE-WORD = 'LABEL'
           COMPUTE V = Y - 5
             GO TO FD-MOVE-V.
      *    IF FD-SAVE-WORD = 'RECORD' GO TO FD-CK-RECORD.
           IF FD-SAVE-WORD = 'VALUE'
               MOVE 'Q' TO STATUS (Z)
             COMPUTE V = Y - 5
             GO TO FD-MOVE-V.
           IF FD-SAVE-WORD = 'DATA'
             COMPUTE V = Y - 4
             GO TO FD-MOVE-V.
           IF FD-SAVE-WORD = 'REPORT'
             COMPUTE  V = Y - 6
           GO TO FD-MOVE-V.
           IF FD-SAVE-WORD = 'REPORTS'
             COMPUTE V = Y - 7
             GO TO FD-MOVE-V.
           IF FD-SAVE-WORD  = 'CODE'
               MOVE 'C' TO STATUS (Z)
               MOVE 1 TO CODE-SW
               COMPUTE V = Y - 4
               GO TO FD-MOVE-V.
           IF CODE-SW = 1      PERFORM FIND-CODE THRU F-E
               ADD 1 TO Y.
           PERFORM FD-RESRV-CHK.
           MOVE ' ' TO FOUND-DATA.
           IF FRST-VERB-SW = 0
           MOVE 0 TO TALLE
           INSPECT FD-SAVE-WORD TALLYING TALLE
               FOR CHARACTERS BEFORE INITIAL ' '
               COMPUTE V = Y - TALLE
               GO TO FD-MOVE-V.
           MOVE 0 TO B MOVE SPACES TO FD-SAVE-WORD.
           GO TO FD-CHECK.
       FD-MOVE-V.
           IF FD-SAVE-WORD = BLNKS
               MOVE 0 TO B GO TO FD-CHECK.
           MOVE 1 TO FRST-VERB-SW.
           MOVE V TO S-WORD (Z).
           ADD 1 TO Z.
           MOVE 0 TO B MOVE SPACES TO FD-SAVE-WORD.
           GO TO FD-CHECK.
       FD-PERIOD-FOUND.
           PERFORM FD-RESRV-CHK.
           MOVE ' ' TO FOUND-DATA.
           COMPUTE V = Y + 1.
           MOVE 'P' TO STATUS (Z).
           MOVE V TO S-WORD (Z).
           MOVE 0 TO X.
           MOVE 1 TO V.
           MOVE 1 TO Z.
       FD-PERIOD-LOOP.
           MOVE SPACES TO XSAVE-A-LINE   FD-PERIOD-FLAG.
           ADD 1 TO X.
           IF STATUS (Z) = 'Q' MOVE '*' TO XSAVE-LINE   (1).
           MOVE S-WORD (Z) TO START-IT X.
           ADD 1 TO Z.
           IF STATUS (Z) = 'P' MOVE 'F' TO FD-PERIOD-FLAG.
           MOVE S-WORD (Z) TO STOP-IT.
           SUBTRACT 2 FROM STOP-IT.
       FD-LINE-LOOP.
           ADD 1 TO V.
           IF (X = 1) AND (TOT-LINE (1) = 'F') AND
              (TOT-LINE (2) = 'F') AND (TOT-LINE (3) = 'D')
              MOVE 2 TO X.
           MOVE TOT-LINE (X) TO XSAVE-LINE   (V).
           IF X = STOP-IT GO TO FD-PRINT-LINE.
           ADD 1 TO X.
           GO TO FD-LINE-LOOP.
       FD-PRINT-LINE.
           IF FD-PERIOD-FLAG = 'F' ADD 1 TO V
             MOVE '.' TO XSAVE-LINE   (V).
           MOVE 5  TO V.
           IF STATUS (Z) = 'C' PERFORM CODE-ROUTE.
           MOVE  XSAVE-A-LINE  TO OUT-BODY.
           IF R-SW = 1 AND FD-PERIOD-FLAG = 'F'
               MOVE 0 TO R-SW
               MOVE '<< RESERVED WORD CHANGED (Z ADDED)  >>'
               TO E-MSG.
           PERFORM PRINT-IT.
           IF FD-PERIOD-FLAG = 'F'
             MOVE SPACE TO FD-PERIOD-FLAG
             GO TO CONT-DATA-DIV.
           GO TO FD-PERIOD-LOOP.
       CODE-ROUTE.
           INSPECT XSAVE-A-LINE REPLACING ALL ' WITH '
               BY '      '.
           MOVE '<< CODE CLAUSE CHANGED >>' TO E-MSG.
       FIND-CODE.
           MOVE 0 TO CODE-SW.
           COMPUTE I = Y - 1.
           MOVE '"' TO TOT-LINE (I).
           COMPUTE I = Y.
           COMPUTE H = Y + 1.
           MOVE '0' TO TOT-LINE (I).
           IF FD-SAVE-WORD = 'A' MOVE '1'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'B' MOVE '2'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'C' MOVE '3'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'D' MOVE '4'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'F' MOVE '6'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'G' MOVE '7'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'H' MOVE '8'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'I' MOVE '9'  TO TOT-LINE (H) GO TO F-1.
           MOVE '1' TO TOT-LINE (I).
           IF FD-SAVE-WORD = 'J' MOVE '0'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'K' MOVE '1'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'L' MOVE '2'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'M' MOVE '3'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'N' MOVE '4'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'O' MOVE '5'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'P' MOVE '6'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'Q' MOVE '7'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'R' MOVE '8'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'S' MOVE '9'  TO TOT-LINE (H) GO TO F-1.
           MOVE '2' TO TOT-LINE (I).
           IF FD-SAVE-WORD = 'T' MOVE '0'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'U' MOVE '1'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'V' MOVE '2'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'W' MOVE '3'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'X' MOVE '4'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'Y' MOVE '5'  TO TOT-LINE (H) GO TO F-1.
           IF FD-SAVE-WORD = 'Z' MOVE '6'  TO TOT-LINE (H) GO TO F-1.
       F-1.
           COMPUTE I = Y + 2
           MOVE '"' TO TOT-LINE (I).
           ADD 2 TO Y.
       F-E.  EXIT.
       COPY-ROUTE.
           MOVE X TO D.
           IF REC-BYTE (D) NOT = QUOTE GO TO CONT-DW-LOOK.
           MOVE SPACES TO REC-BYTE (D).
       COPY-LOOP.
           ADD 1 TO D A.
           IF REC-BYTE (D) = QUOTE
           MOVE SPACE TO REC-BYTE (D)
           GO TO COPY-END.
           MOVE REC-BYTE (D) TO XSAVE-LINE (A).
           GO TO COPY-LOOP.
       COPY-END.
           ADD 1 TO D.
           IF REC-BYTE (D) = '.'
             MOVE REC-BYTE (D) TO XSAVE-LINE (A)
             ADD 1 TO D.
           MOVE D TO X.
           GO TO DATA-RESET.
       FIL-ROUTE.
           MOVE 0 TO TALLE.
           INSPECT REC-CI      TALLYING TALLE
               FOR ALL 'FILLER.'.
           IF TALLE NOT = 0 GO TO FIL-ROUTE-GROUP.
           INSPECT REC-CI TALLYING TALLE FOR ALL 'PIC'.
           IF TALLE = 0 GO TO FIL-ROUTE-GROUP.
           MOVE 0 TO TALLE.
           INSPECT REC-CI TALLYING TALLE FOR ALL 'OCCURS'.
           IF TALLE NOT = 0 GO TO FIL-ROUTE-GROUP.
           MOVE 0 TO TALLE.
           INSPECT REC-CI      TALLYING TALLE
               FOR ALL 'REDEFINES'.
           IF TALLE NOT = 0
               ADD 1 TO FILCNT
               MOVE '<< FILLER REDEFINES CHANGED >>'
               TO E-MSG
               INSPECT XSAVE-A-LINE REPLACING ALL
               'FILLER' BY FILFLD.
           GO TO CONT-DW-LOOK.
       FIL-ROUTE-GROUP.
               ADD 1 TO FILCNT.
           INSPECT XSAVE-A-LINE REPLACING
               ALL 'FILLER' BY FILFLD.
           MOVE '<< FILLER AT GROUP LEVEL CHANGED >>'
               TO E-MSG.
           GO TO CONT-DW-LOOK.
       CONT-DW-LOOK.
           MOVE C TO SAV-SUB.
             VARYING Z FROM 1 BY 1 UNTIL Z = 127.                       TABLEP
           MOVE 0 TO Z.
           IF FOUND-DATA = 'F' GO TO FOUND-PROC-RESERVE.
           MOVE 0 TO Z.
           IF FOUND-DATA NOT = 'F'
           GO TO DATA-RESET.
      *   ILLEGAL RESERVED WORD HAS BEEN FOUND - PRINT ORIGINAL LINE ***
      *   AND ADD -Q TO RESERVE WORD ***
       FOUND-PROC-RESERVE.
           MOVE CI-REC TO OUT-BODY.
           MOVE '<< RESERVED WORD CHANGED (Z ADDED) >>'  TO E-MSG.
           MOVE SPACES TO OUT-BODY.
           MOVE ' ' TO FOUND-DATA.
           COMPUTE I = A - 1.
           MOVE A TO H.
           MOVE SAV-SUB TO K.
           MOVE 0 TO J.
           PERFORM MOVE-Z THRU MOVE-Z-EXIT.
           MOVE 'Z' TO XSAVE-LINE (H).
           ADD 1 TO A.
           IF PERIOD-FLAG = '1'
             MOVE '.' TO XSAVE-LINE (A)
             MOVE '0' TO PERIOD-FLAG
             ADD 1 TO A.
           IF DATA-LINE-END-SWTCH = '1'
             GO TO DATA-LINE-ENDED.
           GO TO DATA-RESET.
       LOOK-PROC-RESERVE.
           IF DATA-SAVED-WORD = D-RESERVE (Z)
             MOVE 'F' TO FOUND-DATA
             MOVE 126 TO Z.                                             TABLEP
       PROC-LOOK-END. EXIT.
       DATA-LINE-ENDED.
      *   LAST WORD ON LINE HAS BEEN REACHED ***
      *   CHECK FOR NON-ALLOWED RESERVE WORD ***
      *   RESET AND START NEW LINE PROCESSING ***
      *   CHECK FOR LITERAL CONTINUATION ****************
           IF REC-BYTE (1) = '-' MOVE '-' TO OUT-ASTER.
           MOVE XSAVE-A-LINE TO OUT-TEXT.
           PERFORM PRINT-IT.
           MOVE SPACES TO OUT-BODY.
           MOVE '0' TO PERIOD-FLAG.
       DATA-READ-AND-CLEAR.
      *   WORD IS TOO LONG TO BE A RESERVED WORD ***
      *   READ REST OF WORD AND RESET TO CONTINUE ***
           IF REC-BYTE (X) = ',' MOVE ' ' TO REC-BYTE (X).
           MOVE REC-BYTE (X) TO XSAVE-LINE (A).
           ADD 1 TO X A.
           IF REC-BYTE (X) = SPACE
             MOVE REC-BYTE (X) TO XSAVE-LINE (A)
             GO TO DATA-RESET.
           GO TO DATA-READ-AND-CLEAR.
       SCAN-QUOTE.
      *   WRITE ALL BYTES UNTIL NEXT QUOTE ***
           ADD 1 TO X A.
           COMPUTE U = X + 1.
           IF X > 66 GO TO DATA-LINE-ENDED.
           MOVE REC-BYTE (X) TO XSAVE-LINE (A).
           IF REC-BYTE (X) = '"'
             ADD 1 TO A
             MOVE '"' TO XSAVE-LINE (A).
           IF REC-BYTE (X) = QUOTE AND REC-BYTE (U)     = QUOTE
              ADD 1 TO X
              GO TO SCAN-QUOTE.
           IF REC-BYTE (X) = QUOTE
              MOVE '"' TO XSAVE-LINE (A)
              GO TO DATA-WORD-SAVE-LOOP.
           GO TO SCAN-QUOTE.
       DATA-RESET.
           IF COMM-SW = 1
               PERFORM COMMON-ROUTE
                       THRU COMM-EXIT.
           MOVE SPACES TO DATA-SAVED-WORD.
           MOVE 0 TO Y.
           GO TO DATA-WORD-SAVE-LOOP.
      *  P R O C E D U R E    D I V I S I O N  *************************


       START-PROC-DIV.
           MOVE '0' TO PERIOD-FLAG.
           MOVE REC-CI TO OUT-TEXT.
           PERFORM PRINT-IT.
           MOVE 1 TO PROC-SW.
           PERFORM READ-ENVIR.
           IF ID-FIRST = 'DECLARATI' MOVE '0' TO FST-READ
           MOVE '1' TO DECLAR-SW
           GO TO PARA-RETURN.
       DD-READ-LOOP.
           IF FST-READ = '0' PERFORM READ-ENVIR
             ELSE MOVE '0' TO FST-READ.
           IF USING-SW = 2
               PERFORM DO-I-NEED-USING.
      *    IF SECT-SWITCH = '1' AND ID-AREA-A = '    '
      *      GO  TO PARAGRAPH-ROUTE
      *      ELSE MOVE ' ' TO SECT-SWITCH.
           MOVE ' ' TO PARA-SWITCH1.
           MOVE 0 TO TALLE.
           INSPECT REC-CI TALLYING TALLE FOR ALL ' NOTE.'.
           INSPECT REC-CI TALLYING TALLE FOR ALL ' NOTE '.
           IF ID-AREA-A IS NOT = '    ' MOVE '1' TO PARA-SWITCH1.
           IF PARA-SWITCH2 = ' ' AND TALLE NOT = 0       AND ID-AREA-A
             = '    ' GO TO NOTE-NO-PARA.
           MOVE PARA-SWITCH1 TO PARA-SWITCH2.
       PARA-RETURN.
      *    INITIALIZE AREAS AND SUBSCRIPTS ***
           MOVE SPACES TO XSAVE-A-LINE SCANNER-REC PROC-SAVED-WORD.
           MOVE CI-REC TO SCANNER-REC.
           MOVE 0 TO Y A X.
       PROC-WORD-SAVE-LOOP.
      *   FIND WORD TO COMPARE AGAINST ILLEGAL WORDS TABLE ***
           ADD 1 TO X Y A.
       COMMA-LOOP.
      *  ADDING TO A CONTROLS SPACING FOR DISPLAYS THAT END IN CC 72.
           IF REC-BYTE (X) = ',' MOVE ' ' TO REC-BYTE (X)
           ADD 1 TO X A GO TO COMMA-LOOP.
           IF X > 66 GO TO PROC-LINE-ENDED.
           MOVE REC-BYTE (X) TO XSAVE-LINE (A).
      *   DO NOT COMPRESS SPACES WITHIN A QUOTE ***
           IF REC-BYTE (X) = QUOTE
              MOVE '"' TO XSAVE-LINE (A)
              GO TO SCAN-QUOTE-NEXT.
           COMPUTE C = X + 1.
      *   BECAUSE OF COMPRESSED DATA 2 SPACES IN ROW = END-OF-LINE ***
           IF REC-BYTE (X) = SPACE AND REC-BYTE (C) = SPACE
             AND X IS > 6 GO TO PROC-LINE-ENDED.
      *   ONLY ONE BYTE BETWEEN WORDS ***
           IF REC-BYTE (X) = SPACE AND REC-BYTE (C)
             IS NOT = SPACE
             PERFORM PROC-WORD-ENDED THRU EXIT-PROC-WORD
             GO TO PROC-RESET.
      *   START CC7 -- MUST BE AT LEAST CC12 ***
           IF REC-BYTE (X) = SPACE AND X IS < 6
             GO TO PROC-WORD-SAVE-LOOP.
      *   RESERVE WORDS ARE NOT > 15 BYTES ***
           IF Y > 15 GO TO PROC-READ-AND-CLEAR.
           MOVE REC-BYTE (X) TO PROC-SAVE-WORD (Y).
           GO TO PROC-WORD-SAVE-LOOP.
      *   X = SPACE TO RIGHT OF WORD - INPUT ***************
      *   A = SPACE TO RIGHT OF WORD - OUTPUT ***************
       PROC-WORD-ENDED.
      *   HAVE WORD -- SEE IF IT IS TROUBLE WORD *****
           IF (PROC-SAVED-WORD = 'NOTE          '
               OR PROC-SAVED-WORD = 'NOTE.')
             AND REC-BYTE (6) = 'N'
             AND REC-BYTE (9) = 'E'
             GO TO NOTE-ROUTE.
       OTHERWISE-RETURN.
           IF PROC-SAVED-WORD = 'UPON'
               MOVE 0 TO DISP-SW DISP-P-SW.
           IF PROC-SAVED-WORD = 'ENTER          '
           GO TO ENTER-ROUTE.
       TRANS-RETURN.
           IF PROC-SAVED-WORD = 'DISPLAY' PERFORM UPON-CHK
               THRU UPON-EXIT GO TO EXIT-PROC-WORD.
       DISP-RETURN.
           IF PROC-SAVED-WORD = 'SECTION'
           OR PROC-SAVED-WORD = 'SECTION.'
           AND DECLAR-SW = '0'
           MOVE '1' TO SECT-SWITCH.
           IF PROC-SAVED-WORD = 'COPY'
           GO TO COPY-PROC-ROUTE.
       COPY-PROC-RETURN.
           IF PROC-SAVED-WORD = 'END' GO TO CK-END-DECLAR.
      *   HAVE WORD -- SEE IF IT IS A NON-ALLOWED RESERVE WORD ***
      *   STRIP PERIOD FROM WORD BEFORE LOOK-UP ***
           COMPUTE C = Y - 1.
           MOVE C TO SAV-SUB.
           IF PROC-SAVE-WORD (C) = '.'
             MOVE SPACE TO PROC-SAVE-WORD (C)
           SUBTRACT 1 FROM A
             MOVE '1' TO PERIOD-FLAG.
           PERFORM LOOK-DATA-RESERVE THRU DATA-LOOK-END
             VARYING Z FROM 1 BY 1 UNTIL Z = 127.                       TABLED
           MOVE 0 TO Z.
           IF FOUND-DATA NOT = 'F'
             AND PERIOD-FLAG = 1
           MOVE '0' TO PERIOD-FLAG
           ADD 1 TO A.
           IF FOUND-DATA NOT = 'F'
             GO TO EXIT-PROC-WORD.
      *   ILLEGAL RESERVE WORD HAS BEEN FOUND -- PRINT ORIGINAL LINE ****
      *   AND ADD -Q TO RESERVE WORD ***
           MOVE REC-CI TO OUT-TEXT.
           MOVE '<< RESERVED WORD CHANGED (Z ADDED) >>'  TO E-MSG
           MOVE SPACES TO OUT-BODY.
           MOVE ' ' TO FOUND-DATA.
           COMPUTE I = A - 1.
           MOVE A TO H.
           MOVE SAV-SUB TO K.
           MOVE 0 TO J.
           PERFORM MOVE-Z THRU MOVE-Z-EXIT.
           MOVE 'Z' TO XSAVE-LINE (H).
           ADD 1 TO A.
           IF PERIOD-FLAG = '1'
             MOVE '.' TO XSAVE-LINE (A)
             MOVE '0' TO PERIOD-FLAG
             ADD 1 TO A.
       EXIT-PROC-WORD. EXIT.
       NOTE-ROUTE.
           MOVE '*' TO OUT-ASTER.
           MOVE REC-CI TO OUT-TEXT.
           PERFORM PRINT-IT.
           MOVE SPACES TO OUT-BODY.
           PERFORM READ-ENVIR.
           MOVE SPACES TO SCANNER-REC.
           MOVE CI-REC TO SCANNER-REC.
           IF REC-BYTE (1) IS = '*'
             OR REC-BYTE (2) IS = ' '
             GO TO NOTE-ROUTE ELSE NEXT SENTENCE.
             MOVE 1 TO X A.
             MOVE 0 TO Y.
             GO TO PROC-WORD-SAVE-LOOP.
       NOTE-NO-PARA.
           MOVE 0 TO TALLE.
           INSPECT REC-CI REPLACING ALL ' NOTE ' BY ' ?OTE '.
           INSPECT REC-CI TALLYING TALLE FOR CHARACTERS
               BEFORE INITIAL '?'.
           MOVE REC-CI TO XW1.
           MOVE REC-CI TO SAVE-LO-TEXT.
           INSPECT REC-CI REPLACING CHARACTERS BY ' '
               AFTER INITIAL '?'.
           INSPECT REC-CI REPLACING ALL '?' BY ' '.
           IF REC-CI NOT = BLNKS
               MOVE REC-CI TO OUT-TEXT
               PERFORM PRINT-IT.
           INSPECT SAVE-LO-TEXT REPLACING CHARACTERS
               BY ' ' BEFORE INITIAL '?'.
           INSPECT SAVE-LO-TEXT REPLACING FIRST '?' BY 'N'.
           MOVE SAVE-LO-TEXT TO REC-CI.
       NOTE-MORE.
           MOVE 0 TO TALLE.
           INSPECT REC-CI TALLYING TALLE FOR CHARACTERS
               BEFORE INITIAL '.'.
           IF TALLE NOT = 65
               INSPECT REC-CI REPLACING CHARACTERS BY ' '
               AFTER INITIAL '.'
               MOVE '*' TO OUT-ASTER
               MOVE REC-CI TO OUT-TEXT
               PERFORM PRINT-IT
               GO TO MORE-ON-LINE.
           MOVE '*' TO OUT-ASTER.
           MOVE REC-CI TO OUT-TEXT.
           PERFORM PRINT-IT.
           PERFORM READ-ENVIR.
           MOVE REC-CI TO SAVE-LO-TEXT.
           GO TO NOTE-MORE.
       MORE-ON-LINE.
           INSPECT SAVE-LO-TEXT REPLACING CHARACTERS
               BY ' ' BEFORE INITIAL '.'.
           INSPECT SAVE-LO-TEXT REPLACING FIRST '.' BY ' '.
           MOVE SAVE-LO-TEXT TO REC-CI.
           GO TO PROC-LINE-ENDED.
       LOOK-DATA-RESERVE.
           IF PROC-SAVED-WORD = D-RESERVE (Z)
             MOVE 'F' TO FOUND-DATA
             MOVE 126 TO Z.                                             TABLED
       DATA-LOOK-END. EXIT.
       ENTER-ROUTE.
           MOVE 0 TO TALLE.
           INSPECT REC-CI TALLYING TALLE
               FOR ALL 'ENTER METASYM'.
           IF TALLE NOT = 0
               MOVE REC-CI TO OUT-TEXT
               MOVE
               '<<<<<<<<<<<<< METASYM ROUTINE FOUND >>>>>>>>>>>>>>'
               TO E-MSG
               PERFORM PRINT-IT
               GO TO DD-READ-LOOP.
           INSPECT REC-CI TALLYING TALLE FOR ALL 'ENTER NEWLINE'.
           IF TALLE NOT = 0
               MOVE REC-CI TO OUT-TEXT
               MOVE
               '<<<< NOT SUPPORTED; USE M$WRITE >>>>' TO E-MSG
               PERFORM PRINT-IT
               GO TO DD-READ-LOOP.
           INSPECT REC-CI TALLYING TALLE FOR ALL 'ENTER PROMPT'.
           IF TALLE NOT = 0
               MOVE REC-CI TO OUT-TEXT
               MOVE
               '<<<< NOT SUPPORTED; USE M$PROMPT >>>>' TO E-MSG
               PERFORM PRINT-IT
               GO TO DD-READ-LOOP.
           INSPECT REC-CI TALLYING TALLE FOR ALL 'ENTER REPLY'.
           IF TALLE NOT = 0
               MOVE REC-CI TO OUT-TEXT
               MOVE
               '<<<< NOT SUPPORTED; USE M$READ >>>>' TO E-MSG
               PERFORM PRINT-IT
               GO TO DD-READ-LOOP.
           INSPECT REC-CI TALLYING TALLE FOR ALL
               'ENTER COBOL'.
           IF TALLE NOT = 0
               MOVE REC-CI TO OUT-TEXT
               MOVE '*' TO OUT-ASTER
               MOVE '<< NOT REQUIRED >>' TO E-MSG
               PERFORM PRINT-IT
               MOVE ' ' TO OUT-ASTER
               GO TO DD-READ-LOOP.
           MOVE 0 TO TALLE.
           INSPECT REC-CI REPLACING ALL ' ENTER ' BY ' CALL ?'.
           INSPECT REC-CI TALLYING TALLE FOR CHARACTERS
               BEFORE INITIAL '?'.
           MOVE REC-CI TO SAVE-LO-TEXT.
           PERFORM FIND-WHAT-ROUTINE THRU GOT-WHAT-ROUTE.
           IF EDMS-SW = 1
               INSPECT REC-CI REPLACING FIRST '?' BY ' '
               MOVE 1 TO EDMS-SW2
               MOVE 0 TO EDMS-SW
               MOVE REC-CI TO OUT-TEXT
               PERFORM PRINT-IT
               MOVE SPACES TO OUT-BODY
               GO TO DD-READ-LOOP.
           INSPECT REC-CI REPLACING FIRST '?' BY ' '.
       MOVE-CALL-QUOTE.
           MOVE XW1 TO XW2.
           MOVE REC-CI TO XW1.
           MOVE '"'   TO RECV-1 (DIS).
           MOVE 1 TO STRT.
           ADD 1 TO DIS.
           COMPUTE NUM = MOVSUB1.
           PERFORM MOVMOD THRU MM-EXIT.
           MOVE MOVSUB2 TO DIS.
           MOVE '"'   TO RECV-1 (DIS).
           IF USING-SW = 1
               ADD 1 TO DIS
               MOVE '.' TO RECV-1 (DIS).
           MOVE XW1 TO SAVE-LO-TEXT.
           MOVE REC-CI TO XW1.
           COMPUTE H = DIS.
           IF USING-SW = 1
               MOVE 0 TO USING-SW
               MOVE SAVE-LO-TEXT TO REC-CI
               MOVE REC-CI TO OUT-TEXT
               PERFORM PRINT-IT
               GO TO DD-READ-LOOP.
       CHK-FOR-PARAMS.
           MOVE SPACES TO XW2.
           ADD 1 TO H.
           MOVE 1 TO I.
       CH-P.
               ADD 1 TO H IF H < 66 GO TO CH-P
               ELSE
                               MOVE 2 TO USING-SW
               MOVE SAVE-LO-TEXT TO REC-CI
               MOVE REC-CI TO OUT-TEXT
               PERFORM PRINT-IT
               GO TO DD-READ-LOOP.
      ****IS NEXT WORD A VERB OR A PARAM*****
       CP-1.
           MOVE RECV-1 (H) TO SEND-1 (I).
           ADD 1 TO H.
           IF RECV-1 (H) = ' ' GO TO CP-NEXT.
           ADD 1 TO I.
           GO TO CP-1.
       CP-NEXT.
           IF XW2 = 'AND' GO TO NO-PARAMS.
           IF XW2 = 'ACCEPT' GO TO NO-PARAMS.
           IF XW2 = 'ADD' GO TO NO-PARAMS.
           IF XW2 = 'ALTER' GO TO NO-PARAMS.
           IF XW2 = 'CALL' GO TO NO-PARAMS.
           IF XW2 = 'CLOSE' GO TO NO-PARAMS.
           IF XW2 = 'DISPLAY' GO TO NO-PARAMS.
           IF XW2 = 'DIVIDE' GO TO NO-PARAMS.
           IF XW2 = 'COMPUTE' GO TO NO-PARAMS.
           IF XW2 = 'ELSE' GO TO NO-PARAMS.
           IF XW2 = 'ENTER' GO TO NO-PARAMS.
           IF XW2 = 'EXHIBIT' GO TO NO-PARAMS.
           IF XW2 = 'GENERATE' GO TO NO-PARAMS.
           IF XW2 = 'GO' GO TO NO-PARAMS.
           IF XW2 = 'IF' GO TO NO-PARAMS.
           IF XW2 = 'INSPECT' GO TO NO-PARAMS.
           IF XW2 = 'MOVE' GO TO NO-PARAMS.
           IF XW2 = 'MULTIPLY' GO TO NO-PARAMS.
           IF XW2 = 'OPEN' GO TO NO-PARAMS.
           IF XW2 = 'OR' GO TO NO-PARAMS.
           IF XW2 = 'PERFORM' GO TO NO-PARAMS.
           IF XW2 = 'READ' GO TO NO-PARAMS.
           IF XW2 = 'READY' GO TO NO-PARAMS.
           IF XW2 = 'RELEASE' GO TO NO-PARAMS.
           IF XW2 = 'SEARCH' GO TO NO-PARAMS.
           IF XW2 = 'STOP' GO TO NO-PARAMS.
           IF XW2 = 'STRING' GO TO NO-PARAMS.
           IF XW2 = 'SUBTRACT' GO TO NO-PARAMS.
           IF XW2 = 'TERMINATE' GO TO NO-PARAMS.
           IF XW2 = 'UNSTRING' GO TO NO-PARAMS.
           IF XW2 = 'SET' GO TO NO-PARAMS.
           IF XW2 = 'WRITE' GO TO NO-PARAMS.
           IF XW2 = 'WHEN' GO TO NO-PARAMS.
           IF XW2 = 'SET' GO TO NO-PARAMS.
       USING-NEXT.
           GO TO ADD-USING.
       ADD-USING.
           MOVE SAVE-LO-TEXT TO XW1.
           ADD 1 TO DIS.
           MOVE ' USING ' TO XW2.
           MOVE 1 TO STRT.
           MOVE 7 TO NUM.
           PERFORM MOVMOD THRU MM-EXIT.
           MOVE REC-CI TO XW2.
           ADD 7 TO DIS.
           COMPUTE NUM = 65 - DIS.
           COMPUTE STRT = DIS - 7.
           PERFORM MOVMOD THRU MM-EXIT.
       AU-X.
           MOVE XW1 TO REC-CI.
           MOVE REC-CI TO OUT-TEXT.
           PERFORM PRINT-IT.
           GO TO DD-READ-LOOP.
       NO-PARAMS.
           MOVE SAVE-LO-TEXT TO XW1.
           MOVE SAVE-LO-TEXT TO XW2.
           COMPUTE DIS = DIS + 2.
           COMPUTE STRT = DIS - 1. MOVE ' ' TO RECV-1 (STRT).
           COMPUTE NUM = 65 - DIS.
           PERFORM MOVMOD THRU MM-EXIT.
           GO TO AU-X.
       DO-I-NEED-USING.
           PERFORM GET-FRST-WORD THRU GET-EXIT.
           MOVE 0 TO USING-SW.
           IF XW1             NOT = 'AND' AND
              XW1             NOT = 'ACCEPT' AND
              XW1             NOT = 'ADD' AND
              XW1             NOT = 'ALTER' AND
              XW1             NOT = 'CALL' AND
              XW1             NOT = 'DISPLAY' AND
              XW1             NOT = 'DIVIDE' AND
              XW1             NOT = 'COMPUTE' AND
              XW1             NOT = 'ELSE' AND
              XW1             NOT = 'ENTER' AND
              XW1             NOT = 'EXHIBIT' AND
              XW1             NOT = 'GENERATE' AND
              XW1             NOT = 'GO' AND
              XW1             NOT = 'IF' AND
              XW1             NOT = 'INSPECT' AND
              XW1             NOT = 'MOVE' AND
              XW1             NOT = 'MULTIPLY' AND
              XW1             NOT = 'OPEN' AND
              XW1             NOT = 'OR' AND
              XW1             NOT = 'PERFORM' AND
              XW1             NOT = 'READ' AND
              XW1             NOT = 'READY' AND
              XW1             NOT = 'RELEASE' AND
              XW1             NOT = 'SEARCH' AND
              XW1             NOT = 'SORT' AND
              XW1             NOT = 'STOP' AND
              XW1             NOT = 'STRING' AND
              XW1             NOT = 'SUBTRACT' AND
              XW1             NOT = 'TERMINATE' AND
              XW1             NOT = 'UNSTRING' AND
              XW1             NOT = 'SET' AND
              XW1             NOT = 'WRITE' AND
               XW1            NOT = 'WHEN' AND
              XW1             NOT = 'SET' PERFORM ADD-USING-LINE.
       ADD-USING-LINE.
           MOVE '         USING ' TO TEXT-OUT.
           MOVE TEXT-OUT TO OUT-BODY.
           MOVE '<< GENERATED >>' TO E-MSG.
           PERFORM PRINT-IT.
       FIND-WHAT-ROUTINE.
           MOVE SPACES TO XW1.
           MOVE 0 TO USING-SW.
           MOVE 0 TO EDMS-SW.
           COMPUTE DIS = TALLE + 1.
           MOVE 0 TO MOVSUB1.
           MOVE DIS TO MOVSUB2.
       MOVE-IT-TO-XW1.
           ADD 1 TO MOVSUB1.
           ADD 1 TO MOVSUB2.
           IF SEND-1 (MOVSUB2) = ' ' OR SEND-1 (MOVSUB2) = ','
               GO TO COMPLETE-ROUTE-NAME.
           IF SEND-1 (MOVSUB2) = '.' MOVE 1 TO USING-SW
           GO TO COMPLETE-ROUTE-NAME.
           MOVE SEND-1 (MOVSUB2) TO RECV-1 (MOVSUB1).
           GO TO MOVE-IT-TO-XW1.
       COMPLETE-ROUTE-NAME.
           COMPUTE MOVSUB1 = MOVSUB1 - 1.
           COMPUTE MOVSUB2 = MOVSUB2 - 1.
           IF XW1 = 'OPENRET' GO TO EDMS-NAME.
           IF XW1 = 'OPRETSHD' GO TO EDMS-NAME.
           IF XW1 = 'OPENUPD' GO TO EDMS-NAME.
           IF XW1 = 'OPUPDSHD' GO TO EDMS-NAME.
           IF XW1 = 'CREATE' GO TO EDMS-NAME.
           IF XW1 = 'STORE' GO TO EDMS-NAME.
           IF XW1 = 'REMOVE' GO TO EDMS-NAME.
           IF XW1 = 'DELETSEL' GO TO EDMS-NAME.
           IF XW1 = 'DELETE' GO TO EDMS-NAME.
           IF XW1 = 'REMOVSEL' GO TO EDMS-NAME.
           IF XW1 = 'DELETAUT' GO TO EDMS-NAME.
           IF XW1 = 'MODIFY' GO TO EDMS-NAME.
           IF XW1 = 'LINK' GO TO EDMS-NAME.
           IF XW1 = 'DELINK' GO TO EDMS-NAME.
           IF XW1 = 'RELINK' GO TO EDMS-NAME.
           IF XW1 = 'FINDG' GO TO EDMS-NAME.
           IF XW1 = 'FINDD' GO TO EDMS-NAME.
           IF XW1 = 'FINDC' GO TO EDMS-NAME.
           IF XW1 = 'FINDM' GO TO EDMS-NAME.
           IF XW1 = 'FINDN' GO TO EDMS-NAME.
           IF XW1 = 'FINDP' GO TO EDMS-NAME.
           IF XW1 = 'FINDS' GO TO EDMS-NAME.
           IF XW1 = 'FINDSI' GO TO EDMS-NAME.
           IF XW1 = 'FINDX' GO TO EDMS-NAME.
           IF XW1 = 'FINDSEQ' GO TO EDMS-NAME.
           IF XW1 = 'FINDFRST' GO TO EDMS-NAME.
           IF XW1 = 'FINDLAST' GO TO EDMS-NAME.
           IF XW1 = 'FINDDUP' GO TO EDMS-NAME.
           IF XW1 = 'GET' GO TO EDMS-NAME.
           IF XW1 = 'HEAD' GO TO EDMS-NAME.
           IF XW1 = 'DMSSTATS' GO TO EDMS-NAME.
           IF XW1 = 'ENDSTATS' GO TO EDMS-NAME.
           IF XW1 = 'RPTSTATS' GO TO EDMS-NAME.
           IF XW1 = 'DMSTRACE' GO TO EDMS-NAME.
           IF XW1 = 'ENDTRACE' GO TO EDMS-NAME.
           IF XW1 = 'SETERR' GO TO EDMS-NAME.
           IF XW1 = 'RESETERR' GO TO EDMS-NAME.
           IF XW1 = 'DMSRETRN' GO TO EDMS-NAME.
           IF XW1 = 'DMSABORT' GO TO EDMS-NAME.
           IF XW1 = 'DMSLOCK' GO TO EDMS-NAME.
           IF XW1 = 'DMSRLSE' GO TO EDMS-NAME.
           IF XW1 = 'DMSCHKPT' GO TO EDMS-NAME.
           IF XW1 = 'CLOSEDB' GO TO EDMS-NAME.
           GO TO GOT-WHAT-ROUTE.
       EDMS-NAME.
           MOVE 1 TO EDMS-SW.
       GOT-WHAT-ROUTE.
           EXIT.
       GET-FRST-WORD.
           MOVE SPACES TO XW1.
           MOVE 0 TO MOVSUB1.
           MOVE 0 TO MOVSUB2.
           MOVE REC-CI TO XW2.
       GET-FRST-WORD-CHR.
           ADD 1 TO MOVSUB1.
           IF MOVSUB1 > 65 GO TO GET-EXIT.
           IF SEND-1 (MOVSUB1) = ' ' GO TO GET-FRST-WORD-CHR.
           ADD 1 TO MOVSUB2.
           MOVE SEND-1 (MOVSUB1) TO RECV-1 (MOVSUB2).
       GET-NEXT-WORD-CHR.
           ADD 1 TO MOVSUB1.
           IF MOVSUB1 > 65 GO TO GET-EXIT.
           IF SEND-1 (MOVSUB1) = ' ' OR SEND-1 (MOVSUB1) = ','
               OR SEND-1 (MOVSUB1) = '.' GO TO GET-EXIT.
           MOVE SEND-1 (MOVSUB1) TO RECV-1 (MOVSUB2).
           GO TO GET-NEXT-WORD-CHR.
       GET-EXIT.
           EXIT.
       UPON-CHK.
           MOVE 1 TO DISP-SW.
           MOVE SPACES TO XW1.
           MOVE REC-CI TO XW1.
           MOVE 65 TO SUB1.
       UPON-P.
           IF RECV-1 (SUB1) = '.' GO TO UPON-P-GOT.
           IF RECV-1 (SUB1) NOT = ' ' GO TO UPON-P-NO-GOT.
           COMPUTE SUB1 = SUB1 - 1.
           IF SUB1 > 5 GO TO UPON-P.
       UPON-P-NO-GOT.
           GO TO UPON-EXIT.
       UPON-P-GOT.
           MOVE ' ' TO RECV-1 (SUB1).
           MOVE XW1 TO REC-CI.
           MOVE 1 TO DISP-P-SW.
       UPON-EXIT.
           EXIT.
       COPY-PROC-ROUTE.
           MOVE X TO D.
           ADD 1 TO D.
           IF REC-BYTE (D) NOT = QUOTE GO TO COPY-PROC-RETURN.
           MOVE SPACES TO REC-BYTE (D).
       COPY-PROC-LOOP.
           ADD 1 TO D A.
           IF REC-BYTE (D) = QUOTE
           MOVE SPACE TO REC-BYTE (D)
           GO TO COPY-PROC-END.
           MOVE REC-BYTE (D) TO XSAVE-LINE (A)
           GO TO COPY-PROC-LOOP.
       COPY-PROC-END.
           ADD 1 TO D.
           IF REC-BYTE (D) = '.'
           MOVE REC-BYTE (D) TO XSAVE-LINE (A)
           ADD 1 TO D.
           MOVE D TO X.
           GO TO PROC-RESET.
       CK-END-DECLAR.
           COMPUTE C = X + 1.
           IF REC-BYTE (C) = 'D' MOVE '0' TO DECLAR-SW.
           GO TO PROC-RESET.
       PROC-LINE-ENDED.
      *   LAST WORD ON LINE HAS BEEN REACHED ***
      *   CHECK FOR NON-ALLOWED RESERVE WORD ***
      *   RESET AND START NEW LINE PROCESSING ***
       PROC-PRINT.
           MOVE XSAVE-A-LINE TO OUT-BODY.
           IF PROC-SW = 1 AND DISP-P-SW = 1
               MOVE OUT-TEXT TO XW1
               MOVE 65 TO SUB1
               PERFORM UPON-P THRU UPON-EXIT
               MOVE XW1 TO OUT-TEXT
               PERFORM PRINT-IT
               MOVE '        UPON CONSOLE.' TO OUT-TEXT
               MOVE '<< UPON CONSOLE ADDED >>' TO E-MSG
               MOVE 0 TO DISP-SW DISP-P-SW.
           PERFORM PRINT-IT.
           MOVE SPACES TO OUT-BODY.
           MOVE '0' TO PERIOD-FLAG.
           MOVE '0' TO WRITE-SWITCH.
           GO TO DD-READ-LOOP.
       PROC-READ-AND-CLEAR.
      *   WORD IS TOO LONG TO BE A RESERVE WORD ***
      *   READ REST OF WORD AND RESET TO CONTINUE ***
           MOVE REC-BYTE (X) TO XSAVE-LINE (A)
           ADD 1 TO X A.
           IF REC-BYTE (X) = SPACE
             MOVE REC-BYTE (X) TO XSAVE-LINE (A)
             GO TO PROC-RESET.
           IF REC-BYTE (X) = ',' MOVE ' ' TO REC-BYTE (X)
           ADD 1 TO X.
           GO TO PROC-READ-AND-CLEAR.
       SCAN-QUOTE-NEXT.
      *   WRITE ALL BYTES UNTIL NEXT QUOTE ***
           ADD 1 TO X A.
           COMPUTE U = X + 1.
           IF X > 66 GO TO PROC-LINE-ENDED.
           MOVE REC-BYTE (X) TO XSAVE-LINE (A).
           IF REC-BYTE (X) = '"'
             ADD 1 TO A
             MOVE '"' TO XSAVE-LINE (A).
           IF REC-BYTE (X) = QUOTE AND REC-BYTE (U)     = QUOTE
              ADD 1 TO X
              GO TO SCAN-QUOTE-NEXT.
           IF REC-BYTE (X) = QUOTE MOVE '"' TO XSAVE-LINE (A)
              GO TO PROC-WORD-SAVE-LOOP.
           GO TO SCAN-QUOTE-NEXT.
           MOVE SPACES TO PROC-SAVED-WORD.
           MOVE 0 TO Y.
           GO TO PROC-WORD-SAVE-LOOP.
       SLASH-PUT.
           MOVE CI-REC TO OUT-BODY.
           MOVE BLNKS TO OUT-TEXT.
           PERFORM PRINT-IT.
           MOVE SPACE TO ID-ASTER.
           MOVE SPACE TO OUT-ASTER.
       MOVE-Z.
           MOVE XSAVE-LINE (I) TO XSAVE-LINE (H).
           COMPUTE I = I - 1.
           COMPUTE H = H - 1.
           ADD 1 TO J.
           IF J < K AND XSAVE-LINE (I) = ' '
               GO TO MOVE-Z-EXIT.
           IF J < K GO TO MOVE-Z.
       MOVE-Z-EXIT.
           EXIT.
       MOVE-ZX.
           MOVE REC-BYTE  (I) TO REC-BYTE  (H).
           COMPUTE I = I - 1.
           COMPUTE H = H - 1.
           ADD 1 TO J.
           IF J < K AND REC-BYTE (I) = ' '
               GO TO MOVE-ZX-EXIT.
           IF J < K GO TO MOVE-ZX.
       MOVE-ZX-EXIT.
           EXIT.
       COMP-MOVE.
           MOVE 4 TO LNG.
           MOVE 6 TO NUM.
           MOVE 'COMP-6' TO XW2.
           MOVE '<< COMP CHANGED TO COMP-6 >>' TO E-MSG.
           GO TO   COUNT-CHR.
       COMP-U-MOVE.
           MOVE 13 TO LNG.
           MOVE 15 TO NUM.
           MOVE 'COMPUTATIONAL-6' TO XW2.
           MOVE '<< COMPUTATIONAL CHANGED TO COMPUTATIONAL-6 >>'
               TO E-MSG.
           GO TO   COUNT-CHR.
       COMP-1-MOVE.
           MOVE 6 TO LNG.
           MOVE 7 TO NUM.
           MOVE 'COMP-13' TO XW2.
           MOVE '<< WARNING: COMP-13 IS A RELEASE-2 ITEM >>' TO E-MSG.
           GO TO   COUNT-CHR.
       COMP-U-1-MOVE.
           MOVE 15 TO LNG.
           MOVE 'COMPUTATIONAL-13' TO XW2.
           MOVE '<< WARNING: COMP-13 IS A RELEASE-2 ITEM       >>'
               TO E-MSG.
           GO TO   COUNT-CHR.
       COMP-2-MOVE.
           MOVE 6 TO LNG.
           MOVE 7 TO NUM.
           MOVE 'COMP-14' TO XW2.
           MOVE '<< WARNING: COMP-14 IS A RELEASE-2 ITEM >>' TO E-MSG.
           GO TO   COUNT-CHR.
       COMP-U-2-MOVE.
           MOVE 15 TO LNG.
           MOVE 16 TO NUM.
           MOVE 'COMPUTATIONAL-14' TO XW2.
           MOVE '<< WARNING: COMP-14 IS A RELEASE-2 ITEM       >>'
               TO E-MSG.
           GO TO   COUNT-CHR.
       COUNT-CHR.
           MOVE 0 TO CHRCNT.
           INSPECT OUT-TEXT TALLYING CHRCNT
               FOR CHARACTERS BEFORE INITIAL '?'.
           MOVE CHRCNT TO DIS.
           ADD 1 TO DIS.
           MOVE OUT-TEXT TO SAVE-LO-TEXT.
           MOVE OUT-TEXT TO XW1.
           MOVE 1 TO STRT.
           PERFORM MOVMOD THRU MM-EXIT.
           MOVE SAVE-LO-TEXT TO XW2.
           COMPUTE STRT = DIS + LNG.
           COMPUTE DIS = DIS + NUM.
           COMPUTE NUM = 65 - STRT.
           PERFORM MOVMOD THRU MM-EXIT.
           IF MOV2-SW = 2 MOVE 0 TO MOV2-SW
               MOVE ' ' TO RECV-1 (64)
               MOVE ' ' TO RECV-1 (65).
           MOVE XW1 TO OUT-TEXT.
       CC-EXIT.
           EXIT.
       MOVMOD.
           MOVE 0 TO MOVSUB3.
           MOVE STRT TO MOVSUB1.
           MOVE DIS TO MOVSUB2.
       MM-01.
           MOVE SEND-1 (MOVSUB1) TO RECV-1 (MOVSUB2).
           ADD 1 TO MOVSUB1.
           ADD 1 TO MOVSUB2.
           ADD 1 TO MOVSUB3.
       MM-EXIT.
           EXIT.
       COMM-STORE-ROUTE.
           MOVE REC-CI TO OUT-TEXT.
           MOVE '*' TO OUT-ASTER.
           MOVE '<< COMMON-STORAGE FOUND >>' TO E-MSG.
           PERFORM PRINT-IT.
           MOVE ' ' TO OUT-ASTER.
           GO TO READ-ENVIR.
       COMMON-ROUTE.
           MOVE 1 TO MOVSUB2.
           MOVE XSAVE-A-LINE TO XW2.
           MOVE SPACES TO XW1.
           IF (SEND-1 (1) = '0' AND SEND-1 (2) = '1')
           OR (SEND-1 (2) = '0' AND SEND-1 (3) = '1')
           NEXT SENTENCE ELSE GO TO COMM-EXIT.
           IF SEND-1 (5) = ' ' GO TO COMM-EXIT.
           IF SEND-1 (3) = ' ' AND SEND-1 (4) = ' '
           MOVE 5 TO MOVSUB1
               ELSE MOVE 4 TO MOVSUB1.
       MOVE-DATA-RT.
           IF SEND-1 (MOVSUB1) = ' ' OR SEND-1 (MOVSUB1)
               = '.' GO TO COMM-END.
           MOVE SEND-1 (MOVSUB1) TO RECV-1 (MOVSUB2).
           ADD 1 TO MOVSUB1.
           ADD 1 TO MOVSUB2.
           IF MOVSUB2 > 31 GO TO COMM-END.
           GO TO MOVE-DATA-RT.
       COMM-END.
           IF COMM-SW-CHK = 0
               MOVE XW1 TO COMM-DATA-1
           MOVE 1 TO COMM-SW-CHK
               ELSE MOVE XW1 TO COMM-DATA-2.
       COMM-EXIT.
           EXIT.
       BLOCK-CLAUSE-ROUTE.
           MOVE SPACES TO OUT-ID.
           MOVE SPACES TO OUT-TEXT
           MOVE 1 TO NO-SO.
           MOVE 'FOR COMMON-STORAGE CONVERSION, THE FOLLOWING  '
           TO C-MSG.
           MOVE COMM-MSG TO E-MSG.
           COMPUTE OUT-SEQ-NO = SEQ-SAV - 10.
           PERFORM PRINT-IT.
           MOVE 1 TO NO-SO
           MOVE
           TO C-MSG.
           MOVE COMM-MSG TO E-MSG.
           COMPUTE OUT-SEQ-NO = SEQ-SAV - 10.
           PERFORM PRINT-IT.
           MOVE COMM-DATA-1 TO BLK-FLD1.
           MOVE BLOCK-CLAUSE TO C-MSG.
           MOVE COMM-MSG TO E-MSG.
           MOVE 1 TO NO-SO.
           COMPUTE OUT-SEQ-NO = SEQ-SAV - 10.
           PERFORM PRINT-IT.
           MOVE ' ' TO SO-ASTER.
           MOVE BLOCK-CLAUSE TO SO-TEXT-OUT.
           MOVE SO-SEQ TO SEQ-STORE.
           MOVE SEQ-SAV TO SO-SEQ.
           COMPUTE EDIT-KEY = SO-SEQ * 10.
           WRITE SOURCE-OUT FROM SO-OUT
               INVALID KEY DISPLAY 'PROBLEM IN CONVERTER   LINE='
               SO-SEQ UPON PRINTER STOP RUN.
           IF COMM-DATA-2 =
           '                              '
           OR COMM-DATA-2 = COMM-DATA-1
           GO TO END-BLK-CLS.
           MOVE COMM-DATA-2 TO BLK-FLD2.
           MOVE BLOCK-THRU-CLAUSE TO C-MSG.
           MOVE COMM-MSG TO E-MSG.
           MOVE 1 TO NO-SO.
           COMPUTE OUT-SEQ-NO = SEQ-SAV - 10.
           PERFORM PRINT-IT.
           MOVE BLOCK-THRU-CLAUSE TO SO-TEXT-OUT.
           ADD 2 TO SEQ-SAV.
           MOVE SEQ-SAV TO SO-SEQ.
           COMPUTE EDIT-KEY = SO-SEQ * 10.
           WRITE SOURCE-OUT FROM SO-OUT
               INVALID KEY DISPLAY 'PROBLEM IN CONVERTER   LINE='
               SO-SEQ UPON PRINTER STOP RUN.
       END-BLK-CLS.
           MOVE SEQ-STORE TO SO-SEQ.
           MOVE SEQ-STORE TO OUT-SEQ-NO.
           MOVE XSEQ-OLD TO OUT-ID.
       BC-EXIT.
           EXIT.
       I-O-ROUTE.
           INSPECT REC-CI TALLYING TALLE
               FOR ALL 'INPUT-OUTPUT'.
           INSPECT REC-CI REPLACING ALL
               'INPUT-OUTPUT' BY 'I-O         '.
           MOVE REC-CI TO XW2.
           MOVE 0 TO TALLE.
           MOVE 4 TO MOVSUB1.
           MOVE 4 TO MOVSUB2.
           MOVE SPACES TO XW1.
       MOV-I-O.
           ADD 1 TO MOVSUB1.
           IF MOVSUB1 > 65 GO TO MOV-I-O-END.
           IF SEND-1 (MOVSUB1) = ' ' ADD 1 TO TALLE
               IF TALLE > 1 GO TO MOV-I-O.
           IF SEND-1 (MOVSUB1) NOT = ' '
               AND TALLE NOT = 0 MOVE 0 TO TALLE.
           ADD 1 TO MOVSUB2.
           MOVE SEND-1 (MOVSUB1) TO RECV-1 (MOVSUB2).
           GO TO MOV-I-O.
       MOV-I-O-END.
           MOVE XW1 TO REC-CI.
           MOVE 0 TO TALLE.
           MOVE 0 TO MOVSUB1 MOVSUB2.
       I-O-EXIT.
           EXIT.
       ALL-ROUTE.
           MOVE
           '<<<<<<<< ALL OPTION CAN NOT BE CONVERTED >>>>>>>>>'
               TO E-MSG.
       CHK-TO-PUT-UPON.
           IF DISP-SW = 1 AND ID-ASTER = 'V'
               AND ID-FIRST NOT = '    UPON '
               MOVE '        UPON CONSOLE' TO OUT-TEXT
               MOVE '<< UPON CONSOLE ADDED >>' TO E-MSG
               PERFORM PRINT-IT
               MOVE 0 TO DISP-SW DISP-P-SW.
       FD-RESRV-CHK.
           MOVE Z TO SUB3.
           MOVE ' ' TO FOUND-DATA.
           MOVE FD-SAVE-WORD TO DATA-SAVED-WORD.
           PERFORM LOOK-PROC-RESERVE THRU PROC-LOOK-END
               VARYING Z FROM 1 BY 1 UNTIL Z = 127.                     TABLEP
           MOVE SUB3 TO Z.
           IF FOUND-DATA = 'F'
               PERFORM FD-RESRV-FOUND THRU FD-R-EXIT
               MOVE 1 TO R-SW.
       FD-RESRV-FOUND.
           COMPUTE SUB2 = Y + 1.
           COMPUTE SUB1 = Y.
           MOVE 0 TO SUB3.
       FD-R-MOVE.
           MOVE TOT-LINE (SUB1) TO TOT-LINE (SUB2).
           COMPUTE SUB1 = SUB1 - 1.
           COMPUTE SUB2 = SUB2 - 1.
           ADD 1 TO SUB3.
           IF SUB3 < B GO TO FD-R-MOVE.
           MOVE 'Z' TO TOT-LINE (SUB2).
           ADD 1 TO B.
           ADD 1 TO Y.
       FD-R-EXIT.
           EXIT.
