home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / log / cor_log / cor.prg < prev    next >
Text File  |  1988-12-02  |  83KB  |  3,589 lines

  1. * COR.PRG - Tickler database system
  2. ************************************************************
  3. *                         CORMAIN                          *
  4. ************************************************************
  5.  
  6. * CORMAIN Main Menu and Calling Program
  7.  
  8. CLEAR ALL
  9. CLEAR
  10.  
  11. SET MENU ON
  12. SET STATUS OFF
  13. SET ESCAPE OFF
  14. SET HEADING OFF
  15. SET SAFETY OFF
  16. SET TALK OFF
  17. SET BELL OFF
  18. SET CONFIRM ON
  19. SET SCOREBOARD OFF
  20. SET DELETED ON
  21. SET ODOMETER TO 10
  22. SET PROCEDURE TO COR
  23.  
  24. IF .NOT. FILE("CORMEM.MEM")
  25.     DO CORSETUP
  26.     RESTORE FROM CORMEM
  27. ELSE
  28.     RESTORE FROM CORMEM
  29. ENDIF .NOT. FILE(
  30.  
  31. IF mdelim = "Y"
  32.     SET DELIMITERS TO "[]"
  33.     SET DELIMITERS ON
  34. ENDIF mdelim
  35.  
  36. * SET COLORS
  37. IF ISCOLOR()
  38.     SET COLOR TO &mcolor
  39. ELSE
  40.     SET COLOR TO &mbw
  41. ENDIF
  42.  
  43. CLEAR
  44. TEXT
  45.  
  46.  
  47.  
  48.  
  49.  
  50.     ┌────────┐  ┌────────┐  ┌────────┐    ┌────────┐  ┌────────┐  ┌────────┐
  51.     │ █ ▀▀▀▀ │  │ █ ▀▀▀█ │  │ █ ▀▀▀█ │    │ ██     │  │ █ ▀▀▀█ │  │ █ ▀▀▀  │
  52.     │ ██     │  │ ██   █ │  │ ██▄▄▄█ │    │ ██     │  │ ██   █ │  │ ██     │
  53.     │ ██     │  │ ██   █ │  │ ███    │    │ ██     │  │ ██   █ │  │ ██  ▀█ │
  54.     │ ██▄▄▄▄ │  │ ██▄▄ █ │  │ ██ █▄▄ │ ▄▄ │ █ ▄▄▄▄ │  │ ██▄▄ █ │  │ ██▄▄ █ │
  55.     └────────┘  └────────┘  └────────┘    └────────┘  └────────┘  └────────┘
  56.  
  57.            C O R R E S P O N D A N C E   C O N T R O L   S Y S T E M
  58.  
  59.                        by  M. W. Praskievicz - May 1988
  60. ENDTEXT
  61. @ 23,1 SAY ""
  62.  
  63. kount = 0
  64. DO WHILE INKEY() = 0
  65.     kount = kount + 1
  66.     IF kount > 1000
  67.         EXIT
  68.     ENDIF kount
  69. ENDDO WHILE INKEY()....
  70. RELEASE kount
  71.  
  72. CLEAR
  73. * RECORD SYSTEM DATE INTO PROGRAM AND VARIOUS DEFAULTS
  74. STORE DTOC(DATE()) TO mdate
  75. @ 2,17 SAY TRIM(ORGANIZ) + " " + TRIM(mheader)
  76. @ 6,17 SAY "ENTER DATE (MM/DD/YY)" GET mdate PICTURE "99/99/99"
  77. @ 7,17 SAY "Press ENTER to confirm choices "
  78. @ 9,17 SAY "Please enter the letter that identifies the"
  79. @ 10,17 SAY "disk drive containing PROGRAM files:" GET prg_drv PICTURE "!!"
  80. @ 12,17 SAY "Please enter the letter that identifies the"
  81. @ 13,17 SAY "disk drive containing DATA files:" GET file_drv PICTURE "!!"
  82. @ 19,17 SAY "Use <PgDn> key if information is OK"
  83. @ 1,1 TO 16,78 DOUBLE
  84. @ 3,2 TO  3,77
  85. READ
  86. PUBLIC FOX
  87. STORE file_drv + "CORDUM" TO CORDUM
  88. STORE file_drv + "COR" TO COR
  89. STORE file_drv + "CORKEY" TO CORKEY
  90. STORE prg_drv + "CORMEM" TO CORMEM
  91. STORE SUBSTR(LTRIM(STR(YEAR(DATE()))),3,2) TO YY
  92. CLEAR
  93. ? " One moment please... "
  94.  
  95. * SET UP FILES
  96. SET DEFA TO &file_drv
  97. USE &COR
  98. SET TALK ON
  99. INDEX ON SERIAL_NO TO &COR
  100. SET TALK OFF
  101. CLEAR
  102. ? " One moment please... "
  103.  
  104. SET DEFA TO &prg_drv
  105. SELECT 1
  106. USE &COR INDEX &COR
  107. SELECT 2
  108. USE &CORDUM
  109. SELECT 1
  110.  
  111. * REMOVE STRAY BLANK RECORDS
  112. GOTO TOP
  113. DELETE ALL FOR SERIAL_NO = 0
  114. PACK
  115. GOTO TOP
  116.  
  117. DO WHILE .T.
  118.     SELECT 1
  119.     CLEAR
  120.     @  2,15 SAY TRIM(mheader) + " - Main Menu"
  121.     @  5,15 SAY "NR. MODULE"
  122.     @  5,55 SAY " "+ DTOC(DATE())
  123.     @  7,15 SAY "[1] ADD new incoming record"
  124.     @  8,15 SAY "[2] Add new OUTGOING record"
  125.     @  9,15 SAY "[3] EDIT record information"
  126.     @ 10,15 SAY "[4] DISPLAY record information"
  127.     @ 11,15 SAY "[5] PRINT route sheets and labels"
  128.     @ 12,15 SAY "[6] Mark records as COMPLETE"
  129.     @ 13,15 SAY "[7] UTILITIES Menu"
  130.     @ 14,15 SAY "[8] REPORTS"
  131.     @ 15,15 SAY "[9] Not used..."
  132.     @ 17,15 SAY "[F] dBASE; [Q] QUIT"
  133.     @ 1,1 TO 21,78 DOUBLE
  134.     @ 3,2 TO 3,77
  135.     @ 23,15 SAY "WARNING - Backup your data disk once per week !"
  136.     STORE "0" TO mod
  137.     @ 19,15 SAY "Enter choice:" GET mod PICTURE "!"
  138.     SET CONFIRM OFF
  139.     READ
  140.     SET CONFIRM ON
  141.     CLEAR
  142.  
  143. DO CASE
  144.  
  145. * ADD RECORD - Incoming
  146.     CASE mod = "1" .OR. mod = "A"
  147.         DO CORADD
  148.         CLOSE DATABASES
  149.         USE &COR INDEX &COR
  150.  
  151. * ADD RECORD - Outgoing
  152.     CASE mod = "2" .OR. mod = "O"
  153.         DO CORADD2
  154.         CLOSE DATABASES
  155.         USE &COR INDEX &COR
  156.  
  157. * EDIT RECORD
  158.     CASE mod = "3" .OR. mod = "E"
  159.         DO CORFIX
  160.         CLOSE DATABASES
  161.         USE &COR INDEX &COR
  162.  
  163. * DISPLAY RECORD
  164.     CASE mod = "4" .OR. mod = "D"
  165.         DO CORDIS
  166.  
  167. * PRINT ROUTE SHEETS AND LABELS
  168.     CASE mod = "5" .OR. mod = "P"
  169.         DO CORRTE
  170.         CLOSE DATABASES
  171.         USE &COR INDEX &COR
  172.  
  173. * MARK RECORDS AS COMPLETE
  174.     CASE mod = "6" .OR. mod = "C"
  175.         DO CORCOMP
  176.         CLOSE DATABASES
  177.         USE &COR INDEX &COR
  178.  
  179. * UTILITIES PROGRAM
  180.     CASE mod = "7" .OR. mod = "U"
  181.         DO CORUTI
  182.  
  183. * REPORTS
  184.     CASE MOD = "8" .OR. mod = "R"
  185.         DO CORRT0
  186.  
  187. * RETURN TO DATABASE PROGRAM
  188.     CASE mod = "F"
  189.         CLEAR
  190.         SET STATUS ON
  191.         SET DELIMITERS OFF
  192.         SET DELIMITERS TO DEFAULT
  193.         SET MENU ON
  194.         SET DELETED OFF
  195.  
  196.         IF .NOT. ISCOLOR()
  197.             SET COLOR TO W,I
  198.         ENDIF .NOT. ISCOLOR()
  199.  
  200.         RELEASE FOX
  201.         SAVE TO CORMEM
  202.         SET PROCEDURE TO
  203.         CLEAR ALL
  204.         RETURN
  205.  
  206. * RETURN TO SYSTEM
  207.     CASE mod = "Q"
  208.         CLEAR
  209.         RELEASE FOX
  210.         SAVE TO CORMEM
  211.         ? "EXITING CORLOG and database programs"
  212.         QUIT
  213.  
  214.     OTHERWISE
  215.         CLEAR
  216.         ? CHR(7)
  217.         @ 22,25 SAY "ILLEGAL ANSWER - TRY AGAIN"
  218.         WAIT " "
  219.     ENDCASE
  220. ENDDO
  221.  
  222. * EOF CORMAIN
  223.  
  224.  
  225.  
  226. ************************************************************
  227. *                         CORADD                           *
  228. ************************************************************
  229.  
  230. PROCEDURE CORADD
  231. * CORADD Add new records
  232.  
  233. GOTO BOTTOM
  234. STORE SERIAL_NO TO newdoc
  235. STORE "X" to decide
  236. CLEAR
  237.  
  238. * CORADD Routine
  239. SELECT 2
  240. USE &CORDUM
  241.  
  242. DO WHILE .T.
  243.     CLEAR
  244.     STORE newdoc+1 TO newdoc
  245.     APPEND BLANK
  246.     REPLACE SERIAL_NO WITH newdoc
  247.     REPLACE TYPE_COR WITH "L"
  248.     REPLACE CLASSIF WITH "U"
  249.     REPLACE COR_TO WITH organiz
  250.     REPLACE CONTROL_NO WITH YY + "-" + LTRIM(STR(SERIAL_NO))
  251.     REPLACE RESP_CODE WITH "O"
  252.     REPLACE COR_FILE WITH "00000"
  253.     @  1, 10  SAY "ADD Screen - Incoming Correspondance               CONTROL NO"
  254.     @  1, 72  SAY  CORDUM->CONTROL_NO  FUNCTION "!"
  255.     @  4, 11  SAY "TYPE"
  256.     @  4, 16  GET  CORDUM->TYPE_COR  PICTURE "!"
  257.     @  4, 18  SAY "M-message,L-letter,N-navgram,E-elect mail,T-T/COMM"
  258.     @  5,  1  SAY "CLASSIFICATION"
  259.     @  5, 16  GET  CORDUM->CLASSIF  PICTURE "!"
  260.     @  5, 18  SAY "T-top secret,S-secret,C-conf,U-unclas"
  261.     @  7,  4  SAY "FROM"
  262.     @  7,  9  GET  CORDUM->COR_FROM
  263.     @  8,  6  SAY "TO"
  264.     @  8,  9  GET  CORDUM->COR_TO
  265.     @ 10,  1  SAY "SUBJECT"
  266.     @ 10,  9  GET  CORDUM->COR_SUBJ PICTURE "@!" 
  267.     @ 12,  8  SAY "FILE NO"
  268.     @ 12, 16  GET  CORDUM->COR_FILE PICTURE "!9999"
  269.     @ 12, 22  SAY "Correspondance file code (SSIC) such as 07300 or 11000"
  270.     @ 13,  9  SAY "REF NO"
  271.     @ 13, 16  GET  CORDUM->COR_REF_NO  PICTURE "!!!!!!!!!!!!!!"
  272.     @ 13, 31  SAY "Reference no. or date-time group"
  273.     @ 14,  6  SAY "SERIAL NO"
  274.     @ 14, 16  GET  CORDUM->COR_SER_NO  PICTURE "!!!!!"
  275.     @ 15, 11  SAY "DATE"
  276.     @ 15, 16  GET  CORDUM->COR_DATE PICTURE "99/99/99"
  277.     @ 15, 25  SAY "Date of correspondance"
  278.     @ 15, 53  SAY  "DATE DUE"
  279.     @ 15, 62  GET  CORDUM->DUE_DATE PICTURE "99/99/99"
  280.     @ 17,  8  SAY "ROUTING"
  281.     @ 17, 16  GET  CORDUM->ROUTE_1  PICTURE "!!!!"
  282.     @ 17, 21  GET  CORDUM->ACT_INFO_1  PICTURE "!"
  283.     @ 17, 25  GET  CORDUM->ROUTE_2  PICTURE "!!!!"
  284.     @ 17, 30  GET  CORDUM->ACT_INFO_2  PICTURE "!"
  285.     @ 17, 34  GET  CORDUM->ROUTE_3  PICTURE "!!!!"
  286.     @ 17, 39  GET  CORDUM->ACT_INFO_3  PICTURE "!"
  287.     @ 17, 43  GET  CORDUM->ROUTE_4  PICTURE "!!!!"
  288.     @ 17, 48  GET  CORDUM->ACT_INFO_4  PICTURE "!"
  289.     @ 17, 52  GET  CORDUM->ROUTE_5  PICTURE "!!!!"
  290.     @ 17, 57  GET  CORDUM->ACT_INFO_5  PICTURE "!"
  291.     @ 17, 62  GET  CORDUM->ROUTE_6  PICTURE "!!!!"
  292.     @ 17, 67  GET  CORDUM->ACT_INFO_6  PICTURE "!"
  293.     @ 18, 17  GET  CORDUM->ROUTE_7  PICTURE "!!!!"
  294.     @ 18, 22  GET  CORDUM->ACT_INFO_7  PICTURE "!"
  295.     @ 18, 26  GET  CORDUM->ROUTE_8  PICTURE "!!!!"
  296.     @ 18, 31  GET  CORDUM->ACT_INFO_8  PICTURE "!"
  297.     @ 18, 35  GET  CORDUM->ROUTE_9  PICTURE "!!!!"
  298.     @ 18, 40  GET  CORDUM->ACT_INFO_9  PICTURE "!"
  299.     @ 18, 44  SAY "Code; A-action,I-info"
  300.     @ 20,  7  SAY "KEYWORDS"
  301.     @ 20, 16  GET  CORDUM->KEYWORD_1  PICTURE "!!!!!!!!!!"
  302.     @ 20, 28  GET  CORDUM->KEYWORD_2  PICTURE "!!!!!!!!!!"
  303.     @ 20, 40  GET  CORDUM->KEYWORD_3  PICTURE "!!!!!!!!!!"
  304.     @  2,  1  TO  2, 78    DOUBLE
  305.     @ 21,  1  TO 21, 78  
  306.     @ 23, 5   SAY "Use <PgDn> key if all fields are OK"
  307.     READ
  308.     @ 23, 5
  309.  
  310.     @ 23,5 SAY "Enter [X] to store and exit, [C] to continue, [A] to abort:";
  311.         GET decide PICTURE "!"
  312.     SET CONFIRM OFF
  313.     READ
  314.     SET CONFIRM ON
  315.  
  316.     IF decide = "A"
  317.         ZAP
  318.         USE
  319.         SELECT 1
  320.         RETURN
  321.     ENDIF
  322.  
  323.         USE
  324.         SELECT 1
  325.         APPEND FROM &CORDUM FOR COR_SUBJ <> SPACE(50)
  326.         SELECT 2
  327.         USE &CORDUM
  328.         ZAP
  329.  
  330.     IF decide <>"C"
  331.         SELECT 1
  332.         RETURN
  333.     ENDIF
  334.  
  335.  ENDDO
  336.  
  337.  * EOF CORADD   
  338.  
  339.  
  340.  
  341. ************************************************************
  342. *                         CORADD2                          *
  343. ************************************************************
  344.  
  345. PROCEDURE CORADD2
  346. * CORADD2 Add new records - outgoing
  347.  
  348. GOTO BOTTOM
  349. STORE SERIAL_NO TO newdoc
  350. STORE "X" to decide
  351. CLEAR
  352.  
  353. * CORADD2 Routine
  354. SELECT 2
  355. USE &CORDUM
  356.  
  357. DO WHILE .T.
  358.     CLEAR
  359.     STORE newdoc+1 TO newdoc
  360.     APPEND BLANK
  361.     REPLACE SERIAL_NO WITH newdoc
  362.     REPLACE TYPE_COR WITH "L"
  363.     REPLACE CLASSIF WITH "U"
  364.     REPLACE COR_FROM WITH organiz
  365.     REPLACE CONTROL_NO WITH YY + "-" + LTRIM(STR(SERIAL_NO))
  366.     REPLACE RESP_CODE WITH "X"
  367.     REPLACE COR_FILE WITH "00000"
  368.     REPLACE COR_SER_NO WITH SUBSTR(CONTROL_NO,4,4)
  369.     REPLACE COR_DATE WITH DATE()
  370.     REPLACE PRNFLG WITH .T.
  371.     REPLACE ACT_INFO_1 WITH "X"
  372.     @  1, 10  SAY "ADD Screen - Outgoing Correspondance               CONTROL NO"
  373.     @  1, 72  SAY  CORDUM->CONTROL_NO  FUNCTION "!"
  374.     @  4, 11  SAY "TYPE"
  375.     @  4, 16  GET  CORDUM->TYPE_COR  PICTURE "!"
  376.     @  4, 18  SAY "M-message,L-letter,N-navgram,E-elect mail,T-T/COMM"
  377.     @  5,  1  SAY "CLASSIFICATION"
  378.     @  5, 16  GET  CORDUM->CLASSIF  PICTURE "!"
  379.     @  5, 18  SAY "T-top secret,S-secret,C-conf,U-unclas"
  380.     @  7,  4  SAY "FROM"
  381.     @  7,  9  GET  CORDUM->COR_FROM
  382.     @  8,  6  SAY "TO"
  383.     @  8,  9  GET  CORDUM->COR_TO
  384.     @ 10,  1  SAY "SUBJECT"
  385.     @ 10,  9  GET  CORDUM->COR_SUBJ PICTURE "@!" 
  386.     @ 12,  8  SAY "FILE NO"
  387.     @ 12, 16  GET  CORDUM->COR_FILE PICTURE "!9999"
  388.     @ 12, 22  SAY "Correspondance file code (SSIC) such as 07300 or 11000"
  389.     @ 14,  6  SAY "SERIAL NO"
  390.     @ 14, 16  SAY  CORDUM->COR_SER_NO  PICTURE "!!!!!"
  391.     @ 15, 11  SAY "DATE"
  392.     @ 15, 16  GET  CORDUM->COR_DATE PICTURE "99/99/99"
  393.     @ 15, 25  SAY "Date of correspondance"
  394.     @ 17,  5  SAY "ORIGINATOR"
  395.     @ 17, 16  GET  CORDUM->ROUTE_1  PICTURE "!!!!"
  396.     @ 20,  7  SAY "KEYWORDS"
  397.     @ 20, 16  GET  CORDUM->KEYWORD_1  PICTURE "!!!!!!!!!!"
  398.     @ 20, 28  GET  CORDUM->KEYWORD_2  PICTURE "!!!!!!!!!!"
  399.     @ 20, 40  GET  CORDUM->KEYWORD_3  PICTURE "!!!!!!!!!!"
  400.     @  2,  1  TO  2, 78    DOUBLE
  401.     @ 21,  1  TO 21, 78  
  402.     @ 23, 5   SAY "Use <PgDn> key if all fields are OK"
  403.     READ
  404.     REPLACE COR_REF_NO WITH ROUTE_1
  405.     @ 23, 5 
  406.     @ 23,5 SAY "Enter [X] to store and exit, [C] to continue, [A] to abort:";
  407.         GET decide PICTURE "!"
  408.     SET CONFIRM OFF
  409.     READ
  410.     SET CONFIRM ON
  411.  
  412.     IF decide = "A"
  413.         ZAP
  414.         USE
  415.         SELECT 1
  416.         RETURN
  417.     ENDIF
  418.  
  419.         USE
  420.         SELECT 1
  421.         APPEND FROM &CORDUM FOR COR_SUBJ <> SPACE(50)
  422.         SELECT 2
  423.         USE &CORDUM
  424.         ZAP
  425.  
  426.     IF decide <>"C"
  427.         SELECT 1
  428.         RETURN
  429.     ENDIF
  430.  
  431.  ENDDO
  432.  
  433.  * EOF CORADD2
  434.  
  435.  
  436. ************************************************************
  437. *                         CORBAK                           *
  438. ************************************************************
  439.  
  440. PROCEDURE CORBAK
  441. * CORBAK Backup or Archive Program
  442.  
  443. CLEAR
  444. STORE "R" TO mbak
  445. @ 1,5 SAY "ARCHIVE or BACKUP data files"
  446. @ 2,1 TO 2,78 DOUBLE
  447. TEXT
  448.  
  449.      PROGRAM:  CORBAK
  450.  
  451.      PURPOSE:  Use to Archive or Backup your data files
  452.  
  453.      WARNING #1 - If you choose to archive or backup to a NEW 
  454.      diskette, ensure that it is FORMATTED prior to use!
  455.  
  456.      WARNING #2 - Archive only when you wish to clean out the database
  457.      and start all over with a clean slate.  All existing
  458.      database files will be copied to drive A: and all
  459.      the data files on your default drive will be emptied!
  460.  
  461.      To update an old fiscal year, you can select drive A:
  462.      or whatever on the opening menu for your database files.
  463.  
  464. ENDTEXT
  465. @ 20,1 TO 20,78
  466. STORE ARC_DRV TO marcdrv
  467. @ 22,5 SAY "ENTER drive for archive of files:" GET marcdrv PICTURE "!!"
  468. READ
  469. @ 23,5 SAY "ENTER [A] for archive, [B] for backup, [R] for return:";
  470. GET mbak PICTURE "!"
  471. SET CONFIRM OFF
  472. READ
  473. SET CONFIRM ON
  474. CLEAR
  475.  
  476. IF mbak <> "A"
  477.     IF mbak <> "B"
  478.         RETURN
  479.     ENDIF
  480. ENDIF
  481.  
  482. STORE marcdrv TO ARC_DRV
  483. * -----------------------------------------------Backup
  484. STORE COR + ".DBF" TO mcordbf
  485. STORE CORMEM + ".MEM" TO mcormem
  486.  
  487. IF .NOT. FOX
  488.     STORE COR + ".NDX" TO mcorndx
  489. ELSE
  490.     STORE COR + ".IDX" TO mcorndx
  491. ENDIF
  492.  
  493. STORE ARC_DRV + "COR.DBF" TO mcordbf2
  494. STORE ARC_DRV + "CORMEM.MEM" TO mcormem2
  495.  
  496. IF .NOT. FOX
  497.     STORE ARC_DRV + "COR.NDX" TO mcorndx2
  498. ELSE
  499.     STORE ARC_DRV + "COR.IDX" TO mcorndx2
  500. ENDIF .NOT. FOX
  501.  
  502. CLOSE DATABASES
  503.  
  504. IF mbak = "B"
  505.     ? "INSERT FORMATTED BACKUP DISKETTE IN DRIVE " + ARC_DRV
  506.     WAIT
  507.     CLEAR
  508.     RUN COPY &mcordbf &mcordbf2
  509.     ? "COPYING FILE COR.DBF TO "+ARC_DRV
  510.     RUN COPY &mcormem &mcormem2
  511.     ? "COPYING FILE CORMEM.MEM TO "+ARC_DRV
  512.     RUN COPY &mcorndx &mcorndx2
  513.  
  514.     IF .NOT. FOX
  515.         ? "COPYING FILE COR.NDX TO " +ARC_DRV
  516.     ELSE
  517.         ? "COPYING FILE COR.IDX TO " +ARC_DRV
  518.     ENDIF .NOT. FOX
  519.  
  520.     SELECT 1
  521.     USE &COR INDEX &COR
  522. ENDIF
  523.  
  524. IF mbak = "A"
  525.     ? "INSERT FORMATTED BACKUP DISKETTE IN DRIVE " + ARC_DRV
  526.     WAIT
  527.     CLEAR
  528.     RUN COPY &mcordbf &mcordbf2
  529.     ? "COPYING FILE COR.DBF TO "+ARC_DRV
  530.     RUN COPY &mcormem &mcormem2
  531.     ? "COPYING FILE CORMEM.MEM TO "+ARC_DRV
  532.     RUN COPY &mcorndx &mcorndx2
  533.  
  534.     IF .NOT. FOX
  535.         ? "COPYING FILE COR.NDX TO " +ARC_DRV
  536.     ELSE    
  537.         ? "COPYING FILE COR.IDX TO " +ARC_DRV
  538.     ENDIF .NOT. FOX
  539.  
  540.     SELECT 1
  541.     USE &COR INDEX &COR
  542.     ZAP
  543.     ? "EMPTYING COR.DBF"
  544. ENDIF
  545.  
  546. RETURN
  547.  
  548. * EOF CORBAK
  549.  
  550.  
  551. ************************************************************
  552. *                         CORCHG                           *
  553. ************************************************************
  554.  
  555. PROCEDURE CORCHG
  556.  
  557. * CORCHG Change data drive
  558.  
  559. CLEAR
  560. @ 1,5 SAY "CHANGE file drive"
  561. @ 2,1 TO 2,78 DOUBLE
  562. TEXT
  563.  
  564.      PROGRAM:  CORCHG
  565.  
  566.      PURPOSE:  This routine is useful for changing the designation of
  567.      the disk drive containing the data you wish to work with without
  568.      restarting the program.  For instance, you could have several different
  569.      departments stored on different drives (like E: F: G: H: etc.) or else
  570.      you can work with archived data on drives A: or B:.
  571.  
  572.      If COR.DBF and its associated files do not exist on the new data drive,
  573.      the program will create them. (They will be empty, of course).
  574.  
  575. ENDTEXT
  576.  
  577. @ 16,1 TO 16,78 
  578. STORE NEWFILE_DRV TO mnewdrv
  579. @ 18,5 SAY "Please enter the letter that identifies the"
  580. @ 19,5 SAY "disk drive containing DATA files:" GET mnewdrv PICTURE "!!"
  581. @ 20,5 SAY "[BLANK to exit]"
  582. READ
  583. CLEAR
  584. ? "Resetting file drive to Drive " + mnewdrv
  585.  
  586. IF mnewdrv = SPACE(2) .OR. mnewdrv = " :" .OR. mnewdrv = ": "
  587.     RETURN
  588. ENDIF
  589.  
  590. STORE mnewdrv to NEWFILE_DRV
  591. STORE NEWFILE_DRV + "COR" TO mtarget1
  592. STORE NEWFILE_DRV + "CORDUM" TO mtarget2
  593. CLOSE DATABASES
  594.  
  595. IF .NOT. FILE(NEWFILE_DRV + "COR.DBF")
  596.     SELECT 1
  597.     USE &COR
  598.     COPY STRUCTURE TO &mtarget1
  599. ENDIF
  600.  
  601. IF .NOT. FILE(NEWFILE_DRV + "CORDUM.DBF")
  602.     SELECT 2
  603.     USE &CORDUM
  604.     COPY STRUCTURE TO &mtarget2
  605. ENDIF
  606.  
  607.  
  608. STORE NEWFILE_DRV TO FILE_DRV
  609. STORE FILE_DRV + "COR" TO COR
  610. STORE FILE_DRV + "CORDUM" TO CORDUM
  611.  
  612. CLOSE DATABASES
  613. SELECT 1
  614. USE &COR
  615. INDEX ON SERIAL_NO TO &COR
  616. SELECT 2
  617. USE &CORDUM
  618. SELECT 1
  619.  
  620. RETURN
  621.  
  622. * EOF CORCHG
  623.  
  624.  
  625. ************************************************************
  626. *                         CORCOMP                          *
  627. ************************************************************
  628.  
  629. PROCEDURE CORCOMP
  630. * CORCOMP Complete line item
  631.  
  632. STORE "X" TO decide
  633.  
  634. DO WHILE .T.
  635.     STORE SPACE(7) TO mserial
  636.      GOTO TOP
  637.      CLEAR
  638.     STORE "N" TO decide2
  639.     @ 3,1 SAY "Do you wish to display the records? {Y/N}";
  640.          GET decide2 PICTURE "Y"
  641.     SET CONFIRM OFF    
  642.     READ
  643.     SET CONFIRM ON
  644.     CLEAR
  645.  
  646.     IF decide2="Y"
  647.         SET HEADING OFF
  648.         DISPLAY ALL CONTROL_NO,COR_DATE,COR_SUBJ FOR RESP_CODE <> "C" OFF
  649.         SET HEADING ON
  650.     ENDIF
  651.  
  652.     @ 13,43 CLEAR TO 17,70
  653.      @ 14,45 SAY "MARK RECORD COMPLETE    "
  654.      @ 15,45 SAY "Control Number: " GET mserial PICTURE "!!-!!!!"
  655.     @ 16,45 SAY "[Blank to exit]         "
  656.     @ 13,43 TO 17,70
  657.      READ
  658.  
  659.       IF mserial =SPACE(7)
  660.           RETURN
  661.      ENDIF
  662.  
  663.     SEEK VAL(SUBSTR(mserial,4,4))
  664.  
  665.      IF .NOT. EOF()
  666.          CLEAR
  667.         @ 1,5 SAY "Mark Correspondance Record as COMPLETE"
  668.          @ 4,5 SAY "Control Number: "
  669.              @ 4,21 SAY CONTROL_NO
  670.         @ 6,5 SAY "FROM: "
  671.         @ 6,11 SAY COR_FROM
  672.         @ 7,5 SAY "  TO: "
  673.         @ 7,11 SAY COR_TO
  674.         @ 8,5 SAY "SUBJ: "
  675.              @ 8,11 SAY COR_SUBJ
  676.         @ 10,5 SAY " REF: " + RTRIM(COR_FILE) + ";" + ;
  677.             RTRIM(COR_REF_NO) + ;
  678.             ", Serial " + RTRIM(COR_SER_NO) + ;
  679.             " of " + DTOC(COR_DATE)
  680.              @ 14,5 SAY "To COMPLETE this line item type [P]"
  681.         STORE "X" TO decide
  682.               @ 15,5 SAY "Exit [X], Process [P]:" GET decide PICTURE "!"
  683.         @  2,1 TO  2,78 DOUBLE
  684.         @ 12,1 TO 12,78
  685.         SET CONFIRM OFF
  686.         READ
  687.         SET CONFIRM ON
  688.  
  689.          IF decide<>"P"
  690.                  RETURN
  691.               ENDIF
  692.  
  693.         REPLACE RESP_CODE WITH "C"
  694.                   LOOP
  695.      ELSE
  696.              STORE "X" TO decide
  697.         STORE SPACE(7) TO mserial
  698.          @ 10,15 SAY "Control Number not found"
  699.              @ 11,15 SAY "[Enter P to try another]"
  700.              @ 13,15 SAY "Exit [X], Process [P]:" GET decide PICTURE "!"
  701.         @ 8,13 TO 15,47
  702.         SET CONFIRM OFF
  703.         READ
  704.         SET CONFIRM ON
  705.  
  706.              IF decide<>"P"
  707.              
  708.                     RETURN
  709.              ENDIF
  710.  
  711.              LOOP
  712.      ENDIF
  713.  
  714.  ENDDO
  715.  
  716. * EOF CORCOMP
  717.  
  718.  
  719. ************************************************************
  720. *                         CORDEL                           *
  721. ************************************************************
  722.  
  723. PROCEDURE CORDEL
  724. * CORDEL Delete line item
  725.  
  726. DO WHILE .T.
  727.     STORE SPACE(7) TO mserial
  728.      GOTO TOP
  729.      CLEAR
  730.     STORE "N" TO decide2
  731.     @ 3,1 SAY "Do you wish to display the records? {Y/N}";
  732.          GET decide2 PICTURE "Y"
  733.     SET CONFIRM OFF    
  734.     READ
  735.     SET CONFIRM ON
  736.     CLEAR
  737.  
  738.     IF decide2="Y"
  739.         SET HEADING OFF
  740.         DISPLAY ALL CONTROL_NO,COR_DATE,COR_SUBJ OFF
  741.         SET HEADING ON
  742.     ENDIF
  743.  
  744.     @ 13,43 CLEAR TO 17,70
  745.      @ 14,45 SAY "DELETE RECORD         "
  746.      @ 15,45 SAY "Control Number: " GET mserial PICTURE "!!-!!!!"
  747.     @ 16,45 SAY "[Blank to exit]       "
  748.     @ 13,43 TO 17,70
  749.      READ
  750.  
  751.       IF mserial =SPACE(7)
  752.           PACK
  753.           RETURN
  754.      ENDIF
  755.  
  756.     SEEK VAL(SUBSTR(mserial,4,4))
  757.  
  758.      IF .NOT. EOF()
  759.          CLEAR
  760.         @ 1,5 SAY "DELETE Correspondance Record"
  761.          @ 4,5 SAY "Control Number: "
  762.              @ 4,21 SAY CONTROL_NO
  763.         @ 6,5 SAY "FROM: "
  764.         @ 6,11 SAY COR_FROM
  765.         @ 7,5 SAY "  TO: "
  766.         @ 7,11 SAY COR_TO
  767.         @ 8,5 SAY "SUBJ: "
  768.              @ 8,11 SAY COR_SUBJ
  769.         @ 10,5 SAY " REF: " + RTRIM(COR_FILE) + ";" + ;
  770.             RTRIM(COR_REF_NO) + ;
  771.             ", Serial " + RTRIM(COR_SER_NO) + ;
  772.             " of " + DTOC(COR_DATE)
  773.              @ 14,5 SAY "To DELETE this line item type [P]"
  774.         STORE "X" TO decide
  775.               @ 15,5 SAY "Exit [X], Process [P]:" GET decide PICTURE "!"
  776.         @  2,1 TO  2,78 DOUBLE
  777.         @ 12,1 TO 12,78
  778.         SET CONFIRM OFF
  779.         READ
  780.         SET CONFIRM ON
  781.  
  782.          IF decide<>"P"
  783.                  PACK
  784.                  RETURN
  785.               ENDIF
  786.  
  787.                DELETE
  788.                   LOOP
  789.      ELSE
  790.              STORE "X" TO decide
  791.         STORE SPACE(4) TO mserial
  792.          @ 10,15 SAY "Serial Number not found"
  793.              @ 11,15 SAY "[Enter P to try another]"
  794.              @ 13,15 SAY "Exit [X], Process [P]:" GET decide PICTURE "!"
  795.         @ 8,13 TO 15,47
  796.         SET CONFIRM OFF
  797.         READ
  798.         SET CONFIRM ON
  799.  
  800.              IF decide<>"P"
  801.                  PACK
  802.                     RETURN
  803.              ENDIF
  804.  
  805.              LOOP
  806.      ENDIF
  807.  ENDDO
  808.  
  809.  * EOF CORDEL
  810.  
  811.  
  812. ************************************************************
  813. *                         CORDIS                           *
  814. ************************************************************
  815.  
  816. PROCEDURE CORDIS
  817. * CORDIS Edit line items
  818.  
  819. CLEAR
  820. STORE "X" TO decide
  821.  
  822. DO WHILE .T.
  823.      GOTO TOP
  824.      CLEAR
  825.     STORE SPACE(7) TO docnmbr
  826.     STORE "N" TO decide2
  827.     @ 3,1 SAY "Do you wish to display the records? {Y/N}";
  828.          GET decide2 PICTURE "Y"
  829.     SET CONFIRM OFF
  830.     READ
  831.     SET CONFIRM ON
  832.     CLEAR
  833.  
  834.     IF decide2="Y"
  835.         SET HEADING OFF
  836.         DISPLAY ALL CONTROL_NO,COR_DATE,COR_SUBJ OFF
  837.         SET HEADING ON
  838.     ENDIF
  839.  
  840.     @ 13,43 CLEAR TO 17,70
  841.      @ 14,45 SAY "DISPLAY RECORD          "
  842.      @ 15,45 SAY "Control Number: " GET docnmbr PICTURE "!!-!!!!"
  843.     @ 16,45 SAY "[Blank to exit]         "
  844.     @ 13,43 TO 17,70
  845.      READ
  846.  
  847.     IF docnmbr=SPACE(7)
  848.         RETURN    
  849.     ENDIF
  850.  
  851.      CLEAR
  852.     SEEK VAL(SUBSTR(docnmbr,4,4))
  853.  
  854.      IF EOF()
  855.          CLEAR
  856.          @ 10,10 SAY "THAT CONTROL NUMBER IS NOT IN THE DATA BASE!"
  857.          @ 11,10 SAY "            TRY ANOTHER."
  858.         @ 9,8 TO 12,54
  859.         ?
  860.         ?
  861.          WAIT
  862.          LOOP
  863.      ENDIF
  864.  
  865.     DO CASE
  866.         CASE RESP_CODE = "D"
  867.             mrespcode = "dummy record"
  868.         CASE RESP_CODE = "C"
  869.             mrespcode = "yes"
  870.         CASE RESP_CODE = "O"
  871.             mrespcode = "no"
  872.         OTHERWISE
  873.             mrespcode = "not applicable"
  874.     ENDCASE
  875.     
  876.     DO CASE
  877.         CASE TYPE_COR = "M"
  878.             mtypecor = "message"
  879.         CASE TYPE_COR = "T"
  880.             mtypecor = "telecommunication or wirenote"
  881.         CASE TYPE_COR = "L"
  882.             mtypecor = "letter"
  883.         CASE TYPE_COR = "E"
  884.             mtypecor = "electronic mail"
  885.         CASE TYPE_COR = "N"
  886.             mtypecor = "NAVGRAM"
  887.         OTHERWISE
  888.             mtypecor = "not indicated"
  889.     ENDCASE
  890.     
  891.     DO CASE
  892.         CASE CLASSIF = "U"
  893.             mclassif = "unclassified"
  894.         CASE CLASSIF = "T"
  895.             mclassif = "top secret"
  896.         CASE CLASSIF = "S"
  897.             mclassif = "secret"
  898.         CASE CLASSIF = "C"
  899.             mclassif = "confidential"
  900.         OTHERWISE
  901.             mclassif = "not indicated"
  902.     ENDCASE
  903.     
  904.      CLEAR
  905.     @  1,  7  SAY "DISPLAY Screen - " + IIF(RESP_CODE="X","OUTGOING CORRESPONDANCE  ","INCOMING CORRESPONDANCE  ") + "         CONTROL NO"
  906.     @  1, 69  SAY  COR->CONTROL_NO
  907.     @  4, 11  SAY "TYPE:"
  908.     @  4, 17  SAY  mtypecor
  909.     @  5,  1  SAY "CLASSIFICATION:"
  910.     @  5, 17  SAY  mclassif
  911.     @  7, 11  SAY "FROM:"
  912.     @  7, 17  SAY  COR->COR_FROM
  913.     @  8, 13  SAY "TO:"
  914.     @  8, 17  SAY  COR->COR_TO
  915.     @ 10,  8  SAY "SUBJECT:"
  916.     @ 10, 17  SAY  COR->COR_SUBJ
  917.     @ 12,  8  SAY "FILE NO:"
  918.     @ 12, 17  SAY  COR->COR_FILE
  919.     @ 13,  9  SAY "REF NO:"
  920.     @ 13, 17  SAY  COR->COR_REF_NO
  921.     @ 14,  6  SAY "SERIAL NO:"
  922.     @ 14, 17  SAY  COR->COR_SER_NO
  923.     @ 15, 11  SAY "DATE:"
  924.     @ 15, 17  SAY  IIF(DTOC(COR_DATE)="  /  /  ","not assigned",DTOC(COR_DATE))
  925.     @ 15, 53  SAY  "DATE DUE:"
  926.     @ 15, 63  SAY  IIF(DTOC(DUE_DATE)="  /  /  ","not assigned",DTOC(DUE_DATE))
  927.     @ 17,  8  SAY "ROUTING:"
  928.     @ 17, 17  SAY  COR->ROUTE_1
  929.     @ 17, 22  SAY  COR->ACT_INFO_1
  930.     @ 17, 26  SAY  COR->ROUTE_2
  931.     @ 17, 31  SAY  COR->ACT_INFO_2
  932.     @ 17, 35  SAY  COR->ROUTE_3
  933.     @ 17, 40  SAY  COR->ACT_INFO_3
  934.     @ 17, 44  SAY  COR->ROUTE_4
  935.     @ 17, 49  SAY  COR->ACT_INFO_4
  936.     @ 17, 53  SAY  COR->ROUTE_5
  937.     @ 17, 58  SAY  COR->ACT_INFO_5
  938.     @ 17, 63  SAY  COR->ROUTE_6
  939.     @ 17, 68  SAY  COR->ACT_INFO_6
  940.     @ 18, 18  SAY  COR->ROUTE_7
  941.     @ 18, 23  SAY  COR->ACT_INFO_7
  942.     @ 18, 27  SAY  COR->ROUTE_8
  943.     @ 18, 32  SAY  COR->ACT_INFO_8
  944.     @ 18, 36  SAY  COR->ROUTE_9
  945.     @ 18, 41  SAY  COR->ACT_INFO_9
  946.     @ 18, 44  SAY "Code; A-action,I-info,X-originator"
  947.     @ 20,  7  SAY "KEYWORDS:"
  948.     @ 20, 17  SAY  COR->KEYWORD_1
  949.     @ 20, 29  SAY  COR->KEYWORD_2
  950.     @ 20, 41  SAY  COR->KEYWORD_3
  951.     @ 20, 53  SAY "COMPLETE?"
  952.     @ 20, 63  SAY  mrespcode
  953.     @  2,  1  TO  2, 78    DOUBLE
  954.     @ 21,  1  TO 21, 78  
  955.  
  956.     @ 23,5 SAY "Display more records? Exit [X] or continue [C]:";
  957.              GET decide PICTURE "!"
  958.     SET CONFIRM OFF
  959.     READ
  960.     SET CONFIRM ON
  961.  
  962.      IF decide<>"C"
  963.          RETURN
  964.      ENDIF
  965.  
  966.      CLEAR
  967.      LOOP
  968.  ENDDO
  969.              
  970.  * EOF CORDIS
  971.  
  972.  
  973. ************************************************************
  974. *                         CORDUM                           *
  975. ************************************************************
  976.  
  977. PROCEDURE CORDUM
  978. *  CORDUM Reset last serial number
  979.  
  980. GOTO BOTTOM
  981. STORE SERIAL_NO TO mserial
  982. STORE "N" TO change
  983. CLEAR
  984.  
  985. @ 3,10 SAY "RESET LAST SERIAL NUMBER"
  986. @ 4,10 SAY "Current last serial number: " + YY + "-" + LTRIM(STR(mserial))
  987. @ 10,10 SAY "Do you want to change the next serial number? {Y/N}" ;
  988. GET change PICTURE "Y"
  989. SET CONFIRM OFF
  990. READ
  991. SET CONFIRM ON
  992.  
  993. IF change = "N"
  994.     RETURN
  995. ENDIF
  996.  
  997. STORE mserial+1 TO mnewserial
  998. @ 12,10 SAY "Enter revised serial number:" GET mnewserial PICTURE "9999"
  999. READ
  1000.  
  1001. IF mnewserial = mserial+1
  1002.     RETURN
  1003. ENDIF mnewserial
  1004.  
  1005. CLEAR
  1006. SELECT 2
  1007. USE &CORDUM
  1008. STORE "X" to decide
  1009. CLEAR
  1010. STORE mnewserial TO newdoc
  1011. APPEND BLANK
  1012. REPLACE COR_FROM WITH "DUMMY RECORD"
  1013. REPLACE COR_TO WITH "DUMMY RECORD"
  1014. REPLACE SERIAL_NO WITH newdoc
  1015. REPLACE CONTROL_NO WITH YY + "-" + LTRIM(STR(SERIAL_NO))
  1016. REPLACE ACT_INFO_1 WITH "D"
  1017. REPLACE RESP_CODE WITH "D"
  1018. REPLACE PRNFLG WITH .T.
  1019. REPLACE COR_SUBJ WITH "DUMMY RECORD - USED TO RESET SERIAL NO."
  1020. REPLACE KEYWORD_1 WITH "DUMMY"
  1021. USE
  1022. SELECT 1
  1023. APPEND FROM &CORDUM
  1024. SELECT 2
  1025. USE &CORDUM
  1026. ZAP
  1027. SELECT 1
  1028. RETURN
  1029.  
  1030. * EOF CORDUM   
  1031.  
  1032.  
  1033. ************************************************************
  1034. *                         CORFIX                           *
  1035. ************************************************************
  1036.  
  1037. PROCEDURE CORFIX
  1038. * CORFIX Edit line items
  1039.  
  1040. CLEAR
  1041. STORE "X" TO decide
  1042.  
  1043. DO WHILE .T.
  1044.      GOTO TOP
  1045.      CLEAR
  1046.     STORE SPACE(7) TO docnmbr
  1047.     STORE "N" TO decide2
  1048.     @ 3,1 SAY "Do you wish to display the records? {Y/N}";
  1049.          GET decide2 PICTURE "Y"
  1050.     SET CONFIRM OFF
  1051.     READ
  1052.     SET CONFIRM ON
  1053.     CLEAR
  1054.  
  1055.     IF decide2="Y"
  1056.         SET HEADING OFF
  1057.         DISPLAY ALL CONTROL_NO,COR_DATE,COR_SUBJ OFF
  1058.         SET HEADING ON
  1059.     ENDIF
  1060.  
  1061.     @ 13,43 CLEAR TO 17,70
  1062.      @ 14,45 SAY "CHANGE RECORD           "
  1063.      @ 15,45 SAY "Control Number: " GET docnmbr PICTURE "!!-!!!!"
  1064.     @ 16,45 SAY "[Blank to exit]         "
  1065.     @ 13,43 TO 17,70
  1066.      READ
  1067.  
  1068.     IF docnmbr=SPACE(7)
  1069.         RETURN    
  1070.     ENDIF
  1071.  
  1072.      CLEAR
  1073.     SEEK VAL(SUBSTR(docnmbr,4,4))
  1074.  
  1075.      IF EOF()
  1076.          CLEAR
  1077.          @ 10,10 SAY "THAT CONTROL NUMBER IS NOT IN THE DATA BASE!"
  1078.          @ 11,10 SAY "            TRY ANOTHER."
  1079.         @ 9,8 TO 12,54
  1080.         ?
  1081.         ?
  1082.          WAIT
  1083.          LOOP
  1084.      ENDIF
  1085.  
  1086.      CLEAR
  1087.     @  1, 10  SAY "EDIT Screen - " + IIF(RESP_CODE="X","OUTGOING CORRESPONDANCE  ","INCOMING CORRESPONDANCE  ") + "         CONTROL NO"
  1088.     @  1, 69  SAY  COR->CONTROL_NO  FUNCTION "!"
  1089.     @  4, 11  SAY "TYPE"
  1090.     @  4, 16  GET  COR->TYPE_COR  PICTURE "!"
  1091.     @  4, 18  SAY "M-message,L-letter,N-navgram,E-elect mail,T-T/COMM"
  1092.     @  5,  1  SAY "CLASSIFICATION"
  1093.     @  5, 16  GET  COR->CLASSIF  PICTURE "!"
  1094.     @  5, 18  SAY "T-top secret,S-secret,C-conf,U-unclas"
  1095.     @  7,  4  SAY "FROM"
  1096.     @  7,  9  GET  COR->COR_FROM
  1097.     @  8,  6  SAY "TO"
  1098.     @  8,  9  GET  COR->COR_TO
  1099.     @ 10,  1  SAY "SUBJECT"
  1100.     @ 10,  9  GET  COR->COR_SUBJ  FUNCTION "S50"
  1101.     @ 12,  8  SAY "FILE NO"
  1102.     @ 12, 16  GET  COR->COR_FILE PICTURE "!9999"
  1103.     @ 12, 22  SAY "Correspondance file code (SSIC)"
  1104.     @ 13,  9  SAY "REF NO"
  1105.     @ 13, 16  GET  COR->COR_REF_NO  PICTURE "!!!!!!!!!!!!!!"
  1106.     @ 13, 31  SAY "Reference no. or date-time group"
  1107.     @ 14,  6  SAY "SERIAL NO"
  1108.     @ 14, 16  GET  COR->COR_SER_NO  PICTURE "!!!!!"
  1109.     @ 15, 11  SAY "DATE"
  1110.     @ 15, 16  GET  COR->COR_DATE
  1111.     @ 15, 25  SAY "Date of correspondance"
  1112.     @ 15, 53  SAY  "DATE DUE"
  1113.     @ 15, 62  GET  COR->DUE_DATE PICTURE "99/99/99"
  1114.     @ 17,  8  SAY "ROUTING"
  1115.     @ 17, 16  GET  COR->ROUTE_1  PICTURE "!!!!"
  1116.     @ 17, 21  GET  COR->ACT_INFO_1  PICTURE "!"
  1117.     @ 17, 25  GET  COR->ROUTE_2  PICTURE "!!!!"
  1118.     @ 17, 30  GET  COR->ACT_INFO_2  PICTURE "!"
  1119.     @ 17, 34  GET  COR->ROUTE_3  PICTURE "!!!!"
  1120.     @ 17, 39  GET  COR->ACT_INFO_3  PICTURE "!"
  1121.     @ 17, 43  GET  COR->ROUTE_4  PICTURE "!!!!"
  1122.     @ 17, 48  GET  COR->ACT_INFO_4  PICTURE "!"
  1123.     @ 17, 52  GET  COR->ROUTE_5  PICTURE "!!!!"
  1124.     @ 17, 57  GET  COR->ACT_INFO_5  PICTURE "!"
  1125.     @ 17, 62  GET  COR->ROUTE_6  PICTURE "!!!!"
  1126.     @ 17, 67  GET  COR->ACT_INFO_6  PICTURE "!"
  1127.     @ 18, 17  GET  COR->ROUTE_7  PICTURE "!!!!"
  1128.     @ 18, 22  GET  COR->ACT_INFO_7  PICTURE "!"
  1129.     @ 18, 26  GET  COR->ROUTE_8  PICTURE "!!!!"
  1130.     @ 18, 31  GET  COR->ACT_INFO_8  PICTURE "!"
  1131.     @ 18, 35  GET  COR->ROUTE_9  PICTURE "!!!!"
  1132.     @ 18, 40  GET  COR->ACT_INFO_9  PICTURE "!"
  1133.     @ 18, 44  SAY "Code; A-action,I-info,X-originator"
  1134.     @ 20,  7  SAY "KEYWORDS"
  1135.     @ 20, 16  GET  COR->KEYWORD_1  PICTURE "!!!!!!!!!!"
  1136.     @ 20, 28  GET  COR->KEYWORD_2  PICTURE "!!!!!!!!!!"
  1137.     @ 20, 40  GET  COR->KEYWORD_3  PICTURE "!!!!!!!!!!"
  1138.     @ 20, 53  SAY "COMPLETE?"
  1139.     @ 20, 63  GET  COR->RESP_CODE PICTURE "!"
  1140.     @  2,  1  TO  2, 78    DOUBLE
  1141.     @ 21,  1  TO 21, 78  
  1142.     @ 23,5 SAY "Use <PgDn> key if all fields are OK"
  1143.     READ
  1144.     @ 23,5
  1145.  
  1146.     @ 23,5 SAY "Edit more records? Exit [X] or continue [C]:";
  1147.              GET decide PICTURE "!"
  1148.     SET CONFIRM OFF
  1149.     READ
  1150.     SET CONFIRM ON
  1151.  
  1152.  
  1153.      IF decide<>"C"
  1154.          RETURN
  1155.      ENDIF
  1156.  
  1157.      CLEAR
  1158.      LOOP
  1159.  ENDDO
  1160.              
  1161.  * EOF CORFIX
  1162.  
  1163.  
  1164.  
  1165. ************************************************************
  1166. *                         CORKEY                           *
  1167. ************************************************************
  1168.  
  1169. PROCEDURE CORKEY
  1170. * CORKEY.PRG - FILE MANAGER FOR KEYWORD PROGRAM TO COMPLEMENT COR.PRG
  1171. CLEAR
  1172. SELECT 4
  1173. USE &CORKEY INDEX &CORKEY
  1174. SELECT 1
  1175. * -----------------------------------------------MENU
  1176. CLEAR
  1177.  
  1178. DO WHILE .T.
  1179.     CLEAR
  1180.     STORE "9" TO kchoice
  1181.     @  2,15 SAY "KEYWORD to document locator utility - Menu"
  1182.     @  5,15 SAY "NR. MODULE"
  1183.     @  5,55 SAY " "+ DTOC(DATE())
  1184.     @  7,15 SAY " 1. DISPLAY the keyword dictionary"
  1185.     @  8,15 SAY " 2. PRINT the keyword dictionary  "
  1186.     @  9,15 SAY " 3. LOCATE and display documents by keyword"
  1187.     @ 10,15 SAY " 4. UPDATE keywords"
  1188.     @ 11,15 SAY " 5. Not used"
  1189.     @ 12,15 SAY " 6. Not used"
  1190.     @ 13,15 SAY " 7. Not used"
  1191.     @ 14,15 SAY " 8. Not used"
  1192.     @ 15,15 SAY " 9. RETURN to calling menu"
  1193.     @  1,1 TO 19,78 DOUBLE
  1194.     @  3,2 TO 3,77
  1195.     @ 17,15 SAY "Enter choice:" GET kchoice PICTURE "!"
  1196.     SET CONFIRM OFF
  1197.     READ
  1198.     SET CONFIRM ON
  1199.  
  1200.     CLEAR
  1201.  
  1202.     DO CASE
  1203. * -----------------------------------------------DISPLAY KEYWORDS
  1204.         CASE kchoice = "1" .OR. kchoice = "D"
  1205.             SELECT 4
  1206.             R = 4
  1207.             @ 1,5 SAY "KEYWORDS currently in use"
  1208.             @ 2,1 TO 2,78 DOUBLE
  1209.  
  1210.             IF KEYWORD_C = SPACE(10)
  1211.                 SKIP
  1212.             ENDIF
  1213.  
  1214.             DO WHILE .NOT. EOF()
  1215.                 IF R = 19
  1216.                     @ 21,1 TO 21,78
  1217.                     @ 22,5 SAY ""
  1218.                     WAIT
  1219.                     R = 4
  1220.                 ENDIF R = 19
  1221.                 @ R, 5 SAY KEYWORD_C
  1222.                 SKIP
  1223.                 IF EOF()
  1224.                     @ 21,1 TO 21,78
  1225.                     @ 22,5 SAY ""
  1226.                     WAIT
  1227.                     EXIT
  1228.                 ENDIF EOF()
  1229.                 @ R,20 SAY KEYWORD_C
  1230.                 SKIP
  1231.                 IF EOF()
  1232.                     @ 21,1 TO 21,78
  1233.                     @ 22,5 SAY ""
  1234.                     WAIT
  1235.                     EXIT
  1236.                 ENDIF EOF()
  1237.                 @ R,35 SAY KEYWORD_C
  1238.                 SKIP
  1239.                 IF EOF()
  1240.                     @ 21,1 TO 21,78
  1241.                     @ 22,5 SAY ""
  1242.                     WAIT
  1243.                     EXIT
  1244.                 ENDIF EOF()
  1245.                 @ R,50 SAY KEYWORD_C
  1246.                 SKIP
  1247.                 IF EOF()
  1248.                     @ 21,1 TO 21,78
  1249.                     @ 22,5 SAY ""
  1250.                     WAIT
  1251.                     EXIT
  1252.                 ENDIF EOF()
  1253.                 @ R,65 SAY KEYWORD_C
  1254.                 SKIP
  1255.                 IF EOF()
  1256.                     @ 21,1 TO 21,78
  1257.                     @ 22,5 SAY ""
  1258.                     WAIT
  1259.                     EXIT
  1260.                 ENDIF EOF()
  1261.                 R = R +1
  1262.             ENDDO WHILE .NOT. EOF()
  1263.  
  1264.             GOTO TOP
  1265.             SELECT 1
  1266. * -----------------------------------------------PRINT KEYWORDS
  1267.         CASE kchoice = "2" .OR. kchoice = "P"
  1268.             ? " Printing keyword list ...."
  1269.             ?
  1270.             SET DEVICE TO PRINT
  1271.             SET PRINT ON
  1272.             @ 0,0
  1273.             SELECT 4
  1274.             R = 9
  1275.             @ 7,5 SAY "KEYWORDS currently in use as of " ;
  1276.                 + DTOC(DATE())
  1277.  
  1278.             IF KEYWORD_C = SPACE(10)
  1279.                 SKIP
  1280.             ENDIF
  1281.  
  1282.             DO WHILE .NOT. EOF()
  1283.                 IF R = 55
  1284.                     EJECT
  1285.                     R = 9
  1286.                 ENDIF R = 55
  1287.                 @ R, 5 SAY KEYWORD_C
  1288.                 SKIP
  1289.                 IF EOF()
  1290.                     EXIT
  1291.                 ENDIF EOF()
  1292.                 @ R,20 SAY KEYWORD_C
  1293.                 SKIP
  1294.                 IF EOF()
  1295.                     EXIT
  1296.                 ENDIF EOF()
  1297.                 @ R,35 SAY KEYWORD_C
  1298.                 SKIP
  1299.                 IF EOF()
  1300.                     EXIT
  1301.                 ENDIF EOF()
  1302.                 @ R,50 SAY KEYWORD_C
  1303.                 SKIP
  1304.                 IF EOF()
  1305.                     EXIT
  1306.                 ENDIF EOF()
  1307.                 @ R,65 SAY KEYWORD_C
  1308.                 SKIP
  1309.                 R = R +1
  1310.             ENDDO WHILE .NOT. EOF()
  1311.  
  1312.             GOTO TOP
  1313.             EJECT
  1314.             SET PRINT OFF
  1315.             SET DEVICE TO SCREEN
  1316.             SELECT 1
  1317.             CLEAR
  1318.  
  1319.         CASE kchoice = "3" .OR. kchoice = "L"
  1320. * -----------------------------------------------FIND RECORDS MATCHING KEYWORDS
  1321.             SELECT 1
  1322.             @ 1,5 SAY "FIND records matching keywords"
  1323.             @ 2,1 TO 2,78 DOUBLE
  1324.             m_key = SPACE(10)
  1325.             zchoice = "D"
  1326.             bchoice = "Y"
  1327. TEXT
  1328.  
  1329.      Enter the KEYWORD you wish to find.  A count of records containing this
  1330.      keyword will be shown.  
  1331.  
  1332. ENDTEXT
  1333.             @ 9,1 TO 9,78
  1334.             @ 11,5 SAY "Enter KEYWORD" ;
  1335.                 GET m_key PICTURE "!!!!!!!!!!"
  1336.             @ 11,30 SAY " [Blank to exit]"
  1337.             READ
  1338.  
  1339.             IF m_key = SPACE(10)
  1340.                 LOOP
  1341.             ENDIF m_key
  1342.  
  1343.             kounter  = 0
  1344.             kounter1 = 0
  1345.             kounter2 = 0
  1346.             kounter3 = 0
  1347.             COUNT ALL FOR KEYWORD_1 = m_key TO kounter1
  1348.             COUNT ALL FOR KEYWORD_2 = m_key TO kounter2
  1349.             COUNT ALL FOR KEYWORD_3 = m_key TO kounter3
  1350.             kounter = kounter1 + kounter2 + kounter3
  1351.             @ 13,5 SAY "There are(is) " + LTRIM(STR(kounter)) +;
  1352.                 " record(s) containing the keyword " +;
  1353.                 m_key
  1354.             @ 15,5 SAY "Display [D], Return [R]:" GET zchoice ;
  1355.                 PICTURE "!"
  1356.             SET CONFIRM OFF
  1357.             READ
  1358.             SET CONFIRM ON
  1359.  
  1360.             IF zchoice = "R"
  1361.                 LOOP
  1362.             ENDIF zchoice
  1363.  
  1364.             GOTO TOP
  1365.             CLEAR
  1366.             LOCATE ALL FOR KEYWORD_1 = m_key
  1367.  
  1368.             DO WHILE .NOT. EOF()
  1369.                 bchoice = "Y"
  1370.  
  1371.                 IF FOUND()
  1372.                     DO CORKEYDS
  1373.                 ENDIF FOUND()    
  1374.  
  1375.                 @ 23,0
  1376.                 @ 23,5 SAY "Continue? {Y/N}" ;
  1377.                     GET bchoice PICTURE "Y"
  1378.                 SET CONFIRM OFF
  1379.                 READ
  1380.                 SET CONFIRM ON
  1381.  
  1382.                 IF bchoice = "Y"
  1383.                     CONTINUE
  1384.                     LOOP
  1385.                 ELSE
  1386.                     EXIT
  1387.                 ENDIF bchoice
  1388.  
  1389.             ENDDO WHILE .NOT. EOF()
  1390.         
  1391.             GOTO TOP
  1392.             LOCATE ALL FOR KEYWORD_2 = m_key
  1393.  
  1394.             DO WHILE .NOT. EOF()
  1395.  
  1396.                 IF bchoice = "N"
  1397.                     EXIT
  1398.                 ENDIF
  1399.  
  1400.                 bchoice = "Y"
  1401.  
  1402.                 IF FOUND()
  1403.                     DO CORKEYDS
  1404.                 ENDIF FOUND()    
  1405.  
  1406.                 @ 23,0
  1407.                 @ 23,5 SAY "Continue? {Y/N}" ;
  1408.                     GET bchoice PICTURE "Y"
  1409.                 SET CONFIRM OFF
  1410.                 READ
  1411.                 SET CONFIRM ON
  1412.  
  1413.                 IF bchoice = "Y"
  1414.                     CONTINUE
  1415.                     LOOP
  1416.                 ELSE
  1417.                     EXIT
  1418.                 ENDIF bchoice
  1419.  
  1420.             ENDDO WHILE .NOT. EOF()
  1421.  
  1422.             GOTO TOP
  1423.             LOCATE ALL FOR KEYWORD_3 = m_key
  1424.  
  1425.             DO WHILE .NOT. EOF()
  1426.  
  1427.                 IF bchoice = "N"
  1428.                     EXIT
  1429.                 ENDIF
  1430.  
  1431.                 bchoice = "Y"
  1432.  
  1433.                 IF FOUND()
  1434.                     DO CORKEYDS
  1435.                 ENDIF FOUND()    
  1436.  
  1437.                 @ 23,0
  1438.                 @ 23,5 SAY "Continue? {Y/N}" ;
  1439.                     GET bchoice PICTURE "Y"
  1440.                 SET CONFIRM OFF
  1441.                 READ
  1442.                 SET CONFIRM ON
  1443.  
  1444.                 IF bchoice = "Y"
  1445.                     CONTINUE
  1446.                     LOOP
  1447.                 ELSE
  1448.                     EXIT
  1449.                 ENDIF bchoice
  1450.  
  1451.             ENDDO WHILE .NOT. EOF()
  1452.  
  1453.             GOTO TOP
  1454.             CLEAR
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.     CASE kchoice = "4" .OR. kchoice = "U"
  1461. * -----------------------------------------------UPDATE KEYWORDS
  1462.             CLEAR
  1463.  
  1464.             IF FOX
  1465.                 m_tempndx = FILE_DRV + "TEMP.IDX"
  1466.             ELSE
  1467.                 m_tempndx = FILE_DRV + "TEMP.NDX"
  1468.             ENDIF FOX
  1469.  
  1470.             SELECT 4
  1471.             ZAP
  1472.             SELECT 1
  1473.             INDEX ON KEYWORD_1 TO &m_tempndx
  1474.             SET UNIQUE ON
  1475.             GOTO TOP
  1476.  
  1477.             ? "COMPARING KEYWORDS - MAY TAKE A FEW MINUTES"
  1478.             ?
  1479.             ? "Checking KEYWORD_1 in all COR.DBF files"
  1480.             DO WHILE .NOT. EOF()
  1481.                 newkey = KEYWORD_1
  1482.                 SELECT 4
  1483.                 GOTO TOP
  1484.                 LOCATE FOR KEYWORD_C = newkey
  1485.             
  1486.                 IF .NOT. FOUND()
  1487.                     APPEND BLANK
  1488.                     REPLACE KEYWORD_C WITH newkey
  1489.                 ENDIF
  1490.  
  1491.                 SELECT 1
  1492.                 SKIP
  1493.             ENDDO .NOT. EOF()
  1494.  
  1495.             INDEX ON KEYWORD_2 TO &m_tempndx
  1496.             SET UNIQUE ON
  1497.             GOTO TOP
  1498.  
  1499.             ? "Checking KEYWORD_2 in all COR.DBF files"
  1500.             DO WHILE .NOT. EOF()
  1501.                 newkey = KEYWORD_2
  1502.                 SELECT 4
  1503.                 GOTO TOP
  1504.                 LOCATE FOR KEYWORD_C = newkey
  1505.  
  1506.                 IF .NOT. FOUND()
  1507.                     APPEND BLANK
  1508.                     REPLACE KEYWORD_C WITH newkey
  1509.                 ENDIF
  1510.  
  1511.                 SELECT 1
  1512.                 SKIP
  1513.             ENDDO .NOT. EOF()
  1514.  
  1515.             INDEX ON KEYWORD_3 TO &m_tempndx
  1516.             SET UNIQUE ON
  1517.             GOTO TOP
  1518.             
  1519.             ? "Checking KEYWORD_3 in all COR.DBF files"
  1520.             DO WHILE .NOT. EOF()
  1521.                 newkey = KEYWORD_3
  1522.                 SELECT 4
  1523.                 GOTO TOP
  1524.                 LOCATE FOR KEYWORD_C = newkey
  1525.  
  1526.                 IF .NOT. FOUND()
  1527.                     APPEND BLANK
  1528.                     REPLACE KEYWORD_C WITH newkey
  1529.                 ENDIF
  1530.             
  1531.                 SELECT 1
  1532.                 SKIP
  1533.             ENDDO .NOT. EOF()
  1534.  
  1535.             SET UNIQUE OFF
  1536.             CLEAR
  1537.             SET INDEX TO
  1538.             SET INDEX TO &COR
  1539.             DELETE FILE &m_tempndx
  1540.             GOTO TOP
  1541.             SELECT 4
  1542.             GOTO TOP
  1543. * -----------------------------------------------
  1544. *        CASE kchoice = "5" .OR. kchoice = " "
  1545. *        CASE kchoice = "6" .OR. kchoice = " "
  1546. *        CASE kchoice = "7" .OR. kchoice = " "
  1547. *        CASE kchoice = "8" .OR. kchoice = " "
  1548.  
  1549.  
  1550.         CASE kchoice = "9" .OR. kchoice = "R"
  1551.             RETURN
  1552.             CLOSE DATABASES
  1553.             USE &COR INDEX &COR
  1554.     OTHERWISE
  1555.         ?? CHR(7)
  1556.         @ 23,20 SAY "ILLEGAL ANSWER - TRY AGAIN!"
  1557.         WAIT ""
  1558.         CLEAR
  1559.         LOOP
  1560.     ENDCASE
  1561.     LOOP
  1562. ENDDO WHILE .T.
  1563.  
  1564. * EOF CORKEY.PRG
  1565.  
  1566.  
  1567. ************************************************************
  1568. *                         CORKEYDS                         *
  1569. ************************************************************
  1570.  
  1571. PROCEDURE CORKEYDS
  1572. * CORKEYDS - Display screen for CORKEY LOCATOR program
  1573.  
  1574.     DO CASE
  1575.         CASE RESP_CODE = "D"
  1576.             mrespcode = "dummy record"
  1577.         CASE RESP_CODE = "C"
  1578.             mrespcode = "yes"
  1579.         CASE RESP_CODE = "O"
  1580.             mrespcode = "no"
  1581.         OTHERWISE
  1582.             mrespcode = "not applicable"
  1583.     ENDCASE
  1584.     
  1585.     DO CASE
  1586.         CASE TYPE_COR = "M"
  1587.             mtypecor = "message"
  1588.         CASE TYPE_COR = "T"
  1589.             mtypecor = "telecommunication or wirenote"
  1590.         CASE TYPE_COR = "L"
  1591.             mtypecor = "letter"
  1592.         CASE TYPE_COR = "E"
  1593.             mtypecor = "electronic mail"
  1594.         CASE TYPE_COR = "N"
  1595.             mtypecor = "NAVGRAM"
  1596.         OTHERWISE
  1597.             mtypecor = "not indicated"
  1598.     ENDCASE
  1599.     
  1600.     DO CASE
  1601.         CASE CLASSIF = "U"
  1602.             mclassif = "unclassified"
  1603.         CASE CLASSIF = "T"
  1604.             mclassif = "top secret"
  1605.         CASE CLASSIF = "S"
  1606.             mclassif = "secret"
  1607.         CASE CLASSIF = "C"
  1608.             mclassif = "confidential"
  1609.         OTHERWISE
  1610.             mclassif = "not indicated"
  1611.     ENDCASE
  1612.     
  1613.      CLEAR
  1614.     @  1,  7  SAY "DISPLAY Screen - " + IIF(RESP_CODE="X","OUTGOING CORRESPONDANCE  ","INCOMING CORRESPONDANCE  ") + "         CONTROL NO"
  1615.     @  1, 69  SAY  COR->CONTROL_NO
  1616.     @  4, 11  SAY "TYPE:"
  1617.     @  4, 17  SAY  mtypecor
  1618.     @  5,  1  SAY "CLASSIFICATION:"
  1619.     @  5, 17  SAY  mclassif
  1620.     @  7, 11  SAY "FROM:"
  1621.     @  7, 17  SAY  COR->COR_FROM
  1622.     @  8, 13  SAY "TO:"
  1623.     @  8, 17  SAY  COR->COR_TO
  1624.     @ 10,  8  SAY "SUBJECT:"
  1625.     @ 10, 17  SAY  COR->COR_SUBJ
  1626.     @ 12,  8  SAY "FILE NO:"
  1627.     @ 12, 17  SAY  COR->COR_FILE
  1628.     @ 13,  9  SAY "REF NO:"
  1629.     @ 13, 17  SAY  COR->COR_REF_NO
  1630.     @ 14,  6  SAY "SERIAL NO:"
  1631.     @ 14, 17  SAY  COR->COR_SER_NO
  1632.     @ 15, 11  SAY "DATE:"
  1633.     @ 15, 17  SAY  IIF(DTOC(COR_DATE)="  /  /  ","not assigned",DTOC(COR_DATE))
  1634.     @ 15, 53  SAY  "DATE DUE:"
  1635.     @ 15, 63  SAY  IIF(DTOC(DUE_DATE)="  /  /  ","not assigned",DTOC(DUE_DATE))
  1636.     @ 17,  8  SAY "ROUTING:"
  1637.     @ 17, 17  SAY  COR->ROUTE_1
  1638.     @ 17, 22  SAY  COR->ACT_INFO_1
  1639.     @ 17, 26  SAY  COR->ROUTE_2
  1640.     @ 17, 31  SAY  COR->ACT_INFO_2
  1641.     @ 17, 35  SAY  COR->ROUTE_3
  1642.     @ 17, 40  SAY  COR->ACT_INFO_3
  1643.     @ 17, 44  SAY  COR->ROUTE_4
  1644.     @ 17, 49  SAY  COR->ACT_INFO_4
  1645.     @ 17, 53  SAY  COR->ROUTE_5
  1646.     @ 17, 58  SAY  COR->ACT_INFO_5
  1647.     @ 17, 63  SAY  COR->ROUTE_6
  1648.     @ 17, 68  SAY  COR->ACT_INFO_6
  1649.     @ 18, 18  SAY  COR->ROUTE_7
  1650.     @ 18, 23  SAY  COR->ACT_INFO_7
  1651.     @ 18, 27  SAY  COR->ROUTE_8
  1652.     @ 18, 32  SAY  COR->ACT_INFO_8
  1653.     @ 18, 36  SAY  COR->ROUTE_9
  1654.     @ 18, 41  SAY  COR->ACT_INFO_9
  1655.     @ 18, 44  SAY "Code; A-action,I-info,X-originator"
  1656.     @ 20,  7  SAY "KEYWORDS:"
  1657.     @ 20, 17  SAY  COR->KEYWORD_1
  1658.     @ 20, 29  SAY  COR->KEYWORD_2
  1659.     @ 20, 41  SAY  COR->KEYWORD_3
  1660.     @ 20, 53  SAY "COMPLETE?"
  1661.     @ 20, 63  SAY  mrespcode
  1662.     @  2,  1  TO  2, 78    DOUBLE
  1663.     @ 21,  1  TO 21, 78  
  1664.     RETURN
  1665.     
  1666. * EOF CORKEYDS
  1667.  
  1668.  
  1669.  
  1670. ************************************************************
  1671. *                         COROLD                           *
  1672. ************************************************************
  1673.  
  1674. PROCEDURE COROLD
  1675. * COROLD - Use to file completed items to COROLD.DBF
  1676.  
  1677. CLEAR
  1678. @ 1,5 SAY "FILE completed items"
  1679. @ 2,1 TO 2,78 DOUBLE
  1680. TEXT
  1681.  
  1682.      PROGRAM: COROLD
  1683.  
  1684.      PURPOSE: Use to file completed items to COROLD.DBF.  Suggest using
  1685.      drive A: floppy with separate disk for each quarter.
  1686.  
  1687. ENDTEXT
  1688. @ 13,1 TO 13,78 
  1689. @ 15,5 SAY "ENTER drive with COROLD.DBF files:" GET ARC_DRV PICTURE "!!"
  1690. @ 16,5 SAY "[Blank to exit]"
  1691. @ 18,5 SAY "If your storage drive does not have COROLD files on it,"
  1692. @ 19,5 SAY "the program will create them for you."
  1693. READ
  1694.  
  1695. IF ARC_DRV = "  "
  1696.     CLEAR
  1697.     RETURN
  1698. ENDIF
  1699. IF ARC_DRV = ": "
  1700.     CLEAR
  1701.     RETURN
  1702. ENDIF
  1703. IF ARC_DRV = " :"
  1704.     CLEAR
  1705.     RETURN
  1706. ENDIF
  1707.  
  1708. CLEAR
  1709. STORE ARC_DRV +"COROLD" TO COROLD
  1710. SET DEFA TO &ARC_DRV
  1711.  
  1712. IF .NOT. FILE("COROLD.DBF")
  1713.     COPY STRU TO &COROLD
  1714. ENDIF
  1715.  
  1716. USE
  1717. SET DEFA TO &PRG_DRV
  1718. SELECT 3
  1719. USE &COROLD
  1720. ? "APPENDING COMPLETED RECORDS TO COROLD.DBF..."
  1721. APPEND FROM &COR FOR RESP_CODE = "C"
  1722. INDEX ON SERIAL_NO TO &COROLD
  1723. USE
  1724. SELECT 1
  1725. USE &COR INDEX &COR
  1726. ? "DELETING ALL COMPLETED RECORDS FROM COR.DBF..."
  1727. DELETE ALL FOR RESP_CODE = "C"
  1728. PACK
  1729. CLEAR
  1730.  
  1731. RETURN
  1732.  
  1733. * EOF COROLD
  1734.  
  1735.  
  1736. ************************************************************
  1737. *                         CORRT0                           *
  1738. ************************************************************
  1739.  
  1740. PROCEDURE CORRT0
  1741. * CORRT0 Report menu
  1742.  
  1743. DO WHILE .T.
  1744.     CLEAR
  1745.     STORE "R" TO mchoice
  1746.     @  2,15 SAY TRIM(mheader) + " - Reports Menu"
  1747.     @  5,15 SAY "NR. MODULE"
  1748.     @  5,55 SAY " "+ DTOC(DATE())
  1749.     @  7,15 SAY "[1] Listing of OVERDUE items"
  1750.     @  8,15 SAY "[2] Listing of items coming DUE"
  1751.     @  9,15 SAY "[3] Listing of all PENDING items"
  1752.     @ 10,15 SAY "[4] Listing of COMPLETED items"
  1753.     @ 11,15 SAY "[5] SERIAL log outgoing correspondance"
  1754.     @ 12,15 SAY "[6] Listing of ARCHIVED completed items"
  1755.     @ 13,15 SAY "[7] Not used"
  1756.     @ 14,15 SAY "[8] KEYWORD utility"
  1757.     @ 15,15 SAY "[9] Not used..."
  1758.     @ 17,15 SAY "[R] RETURN to calling menu"
  1759.     @ 19,15 SAY "Enter choice:" GET mchoice PICTURE "!"
  1760.     @ 1,1 TO 21,78 DOUBLE
  1761.     @ 3,2 TO 3,77
  1762.     SET CONFIRM OFF
  1763.     READ
  1764.     SET CONFIRM ON
  1765.  
  1766.     DO CASE
  1767.         CASE mchoice = "1" .OR. mchoice = "O"
  1768.             DO CORRT1
  1769.         
  1770.         CASE mchoice = "2" .OR. mchoice = "D"
  1771.             DO CORRT2
  1772.  
  1773.         CASE mchoice = "3" .OR. mchoice = "P"
  1774.             DO CORRT3
  1775.         
  1776.         CASE mchoice = "4" .OR. mchoice = "C"
  1777.             DO CORRT4
  1778.  
  1779.         CASE mchoice = "5" .OR. mchoice = "S"
  1780.             DO CORRT5
  1781.  
  1782.         CASE mchoice = "6" .OR. mchoice = "A"
  1783.             DO CORRT6
  1784.  
  1785. *        CASE mchoice = "7"
  1786.     
  1787.         CASE mchoice = "8" .OR. mchoice = "K"
  1788.             DO CORKEY
  1789.  
  1790.         CASE mchoice = "R"
  1791.             RETURN
  1792.  
  1793.     OTHERWISE
  1794.         CLEAR
  1795.         ? CHR(7)
  1796.         @ 22,25 SAY "ILLEGAL ANSWER - TRY AGAIN"
  1797.         WAIT " "
  1798.     ENDCASE
  1799. ENDDO
  1800.  
  1801. * EOF CORRT0
  1802.  
  1803.  
  1804. ************************************************************
  1805. *                         CORRT1                           *
  1806. ************************************************************
  1807.  
  1808. PROCEDURE CORRT1
  1809. * CORRT1 Listing of OVERDUE items
  1810.  
  1811. CLEAR
  1812. STORE SPACE(4) TO action_code
  1813. @ 1,5 SAY "Listing of OVERDUE items"
  1814. @ 2,1 TO 2,78 DOUBLE
  1815.  
  1816. TEXT
  1817.  
  1818.      REPORT NAME: CORRT1
  1819.  
  1820.      PURPOSE: COR database listing of OVERDUE items.
  1821.  
  1822.      PRINTER REQUIREMENTS: This report uses 80 columns.
  1823.  
  1824. ENDTEXT  
  1825.  
  1826. STORE "S" TO display
  1827. @ 11,1 TO 11,78 
  1828. @ 13,5 SAY "ENTER [S] for screen, [P] for printer, [R] to return:";
  1829. GET display PICTURE "!"
  1830. SET CONFIRM OFF
  1831. READ
  1832. SET CONFIRM ON
  1833.  
  1834. CLEAR
  1835.  
  1836. IF display <> "P"
  1837.     IF display <> "S"
  1838.         RETURN
  1839.     ENDIF
  1840. ENDIF
  1841.  
  1842. CLEAR
  1843.  
  1844. SET TALK ON
  1845. INDEX ON SERIAL_NO to &COR    
  1846. SET TALK OFF
  1847.  
  1848. SET FILTER TO (DUE_DATE < DATE()) .AND. (RESP_CODE = "O")
  1849. GOTO TOP
  1850.  
  1851. CLEAR
  1852.  
  1853. DO CASE
  1854.     CASE display="S"
  1855.         CLEAR
  1856.         GOTO TOP
  1857.         @ 1,1 SAY "CONTROL#"
  1858.         @ 1,11 SAY "FROM/REFERENCE/SUBJECT"
  1859.         @ 1,61 SAY "ACTION"
  1860.         @ 1,68 SAY "DATE DUE"
  1861.         @ 2,1 SAY REPLICATE("-",77)
  1862.         R = 4
  1863.     
  1864.         DO WHILE .NOT. EOF()
  1865.             action_code = SPACE(4)
  1866.  
  1867.             DO CASE
  1868.                 CASE TYPE_COR = "M"
  1869.                     mtype = " MESSAGE"
  1870.                 CASE TYPE_COR = "L"
  1871.                     mtype = " LETTER"
  1872.                 CASE TYPE_COR = "N"
  1873.                     mtype = " NAVGRAM"
  1874.                 CASE TYPE_COR = "T"
  1875.                     mtype = " T/COMM"
  1876.                 CASE TYPE_COR = "E"
  1877.                     mtype = " E-MAIL"
  1878.                 OTHERWISE
  1879.                     mtype = SPACE (8)
  1880.             ENDCASE
  1881.  
  1882.             IF ACT_INFO_1 = "A"
  1883.                 action_code = ROUTE_1
  1884.             ENDIF
  1885.             IF ACT_INFO_2 = "A"
  1886.                 action_code = ROUTE_2
  1887.             ENDIF
  1888.             IF ACT_INFO_3 = "A"
  1889.                 action_code = ROUTE_3
  1890.             ENDIF
  1891.             IF ACT_INFO_4 = "A"
  1892.                 action_code = ROUTE_4
  1893.             ENDIF
  1894.             IF ACT_INFO_5 = "A"
  1895.                 action_code = ROUTE_5
  1896.             ENDIF
  1897.             IF ACT_INFO_6 = "A"
  1898.                 action_code = ROUTE_6
  1899.             ENDIF
  1900.             IF ACT_INFO_7 = "A"
  1901.                 action_code = ROUTE_7
  1902.             ENDIF
  1903.             IF ACT_INFO_8 = "A"
  1904.                 action_code = ROUTE_8
  1905.             ENDIF
  1906.             IF ACT_INFO_9 = "A"
  1907.                 action_code = ROUTE_9
  1908.             ENDIF
  1909.  
  1910.             @ R,1  SAY CONTROL_NO
  1911.             @ R,11 SAY RTRIM(COR_FROM) + mtype
  1912.             @ R,61 SAY action_code
  1913.             @ R,68 SAY DTOC(DUE_DATE)
  1914.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  1915.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  1916.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  1917.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  1918.             @ R+1,11 SAY mcorfile + mcorref + mcorser + mcordate
  1919.             @ R+2,11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  1920.             @ R+3,1 SAY ""
  1921.  
  1922.             IF R = 20
  1923.                 WAIT
  1924.                 @ 4,0 CLEAR
  1925.                 R = 0
  1926.             ENDIF
  1927.         
  1928.             R = R+4
  1929.             SKIP
  1930.             LOOP
  1931.         ENDDO WHILE .NOT. EOF()
  1932.  
  1933.         @ 22,1 SAY "  "
  1934.         WAIT
  1935.         CLEAR
  1936.  
  1937.     CASE display="P"
  1938.         STORE 61 TO tline
  1939.         STORE 2 TO tcolumn
  1940.         STORE 0 TO pagenum
  1941.         GOTO TOP
  1942.         SET DEVICE TO PRINT
  1943.         SET PRINT ON
  1944.  
  1945.         DO WHILE .NOT. EOF()
  1946.  
  1947.         IF tline > 55
  1948.             STORE 1 TO tline
  1949.             STORE pagenum + 1 TO pagenum
  1950.             @ tline,    tcolumn + 1  SAY "Page " + STR(pagenum,3)
  1951.             @ tline + 1,tcolumn + 1  SAY DATE()
  1952.             @ tline + 2,tcolumn + 11 SAY TRIM(mheader) + ;
  1953.                 " - OVERDUE CORRESPONDANCE"
  1954.             @ tline + 4,tcolumn + 1 SAY "CONTROL#"
  1955.             @ tline + 4,tcolumn + 11 SAY "FROM/REFERENCE/SUBJECT"
  1956.             @ tline + 4,tcolumn + 61 SAY "ACTION"
  1957.             @ tline + 4,tcolumn + 68 SAY "DATE DUE"
  1958.             STORE tline + 6 TO tline
  1959.         ENDIF
  1960.  
  1961.         action_code = SPACE(4)
  1962.  
  1963.         DO CASE
  1964.             CASE TYPE_COR = "M"
  1965.                 mtype = " MESSAGE"
  1966.             CASE TYPE_COR = "L"
  1967.                 mtype = " LETTER"
  1968.             CASE TYPE_COR = "N"
  1969.                 mtype = " NAVGRAM"
  1970.             CASE TYPE_COR = "T"
  1971.                 mtype = " T/COMM"
  1972.             CASE TYPE_COR = "E"
  1973.                 mtype = " E-MAIL"
  1974.             OTHERWISE
  1975.                 mtype = SPACE (8)
  1976.         ENDCASE
  1977.  
  1978.         IF ACT_INFO_1 = "A"
  1979.             action_code = ROUTE_1
  1980.         ENDIF
  1981.         IF ACT_INFO_2 = "A"
  1982.             action_code = ROUTE_2
  1983.         ENDIF
  1984.         IF ACT_INFO_3 = "A"
  1985.             action_code = ROUTE_3
  1986.         ENDIF
  1987.         IF ACT_INFO_4 = "A"
  1988.             action_code = ROUTE_4
  1989.         ENDIF
  1990.         IF ACT_INFO_5 = "A"
  1991.             action_code = ROUTE_5
  1992.         ENDIF
  1993.         IF ACT_INFO_6 = "A"
  1994.             action_code = ROUTE_6
  1995.         ENDIF
  1996.         IF ACT_INFO_7 = "A"
  1997.             action_code = ROUTE_7
  1998.         ENDIF
  1999.         IF ACT_INFO_8 = "A"
  2000.             action_code = ROUTE_8
  2001.         ENDIF
  2002.         IF ACT_INFO_9 = "A"
  2003.             action_code = ROUTE_9
  2004.         ENDIF
  2005.  
  2006.             @ tline,tcolumn + 1  SAY CONTROL_NO
  2007.             @ tline,tcolumn + 11 SAY RTRIM(COR_FROM) + mtype
  2008.             @ tline,tcolumn + 61 SAY action_code
  2009.             @ tline,tcolumn + 68 SAY DTOC(DUE_DATE)
  2010.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  2011.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  2012.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  2013.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  2014.             @ tline + 1,tcolumn + 11 SAY mcorfile + mcorref + mcorser + mcordate
  2015.             @ tline + 2,tcolumn + 11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  2016.             @ tline + 3,tcolumn + 1 SAY ""
  2017.     
  2018.         STORE tline + 4 TO tline
  2019.         SKIP
  2020.         LOOP
  2021.     ENDDO 
  2022.  
  2023.     EJECT
  2024.     SET DEVICE TO SCREEN
  2025.     SET PRINT OFF
  2026. ENDCASE
  2027.  
  2028. CLEAR
  2029. SET FILTER TO
  2030. GOTO TOP
  2031.  
  2032. SET TALK ON
  2033. INDEX ON SERIAL_NO TO &COR
  2034. SET TALK OFF
  2035.  
  2036. CLEAR
  2037. RETURN
  2038.  
  2039. * EOF CORRT1                                                              
  2040.  
  2041.  
  2042. ************************************************************
  2043. *                         CORRT2                           *
  2044. ************************************************************
  2045.  
  2046. PROCEDURE CORRT2
  2047. * CORRT2 Listing of items coming due
  2048.  
  2049. CLEAR
  2050. STORE SPACE(4) TO action_code
  2051. @ 1,5 SAY "Listing of items COMING due"
  2052. @ 2,1 TO 2,78 DOUBLE
  2053.  
  2054. TEXT
  2055.  
  2056.      REPORT NAME: CORRT2
  2057.  
  2058.      PURPOSE: COR database listing of items COMING due.
  2059.  
  2060.      PRINTER REQUIREMENTS: This report uses 80 columns.
  2061.  
  2062. ENDTEXT  
  2063.  
  2064. STORE "S" TO display
  2065. @ 11,1 TO 11,78 
  2066. @ 13,5 SAY "ENTER [S] for screen, [P] for printer, [R] to return:";
  2067. GET display PICTURE "!"
  2068. SET CONFIRM OFF
  2069. READ
  2070. SET CONFIRM ON
  2071.  
  2072. CLEAR
  2073.  
  2074. IF display <> "P"
  2075.     IF display <> "S"
  2076.         RETURN
  2077.     ENDIF
  2078. ENDIF
  2079.  
  2080. CLEAR
  2081.  
  2082. SET TALK ON
  2083. INDEX ON SERIAL_NO to &COR    
  2084. SET TALK OFF
  2085.  
  2086. SET FILTER TO (((DUE_DATE - 14) < DATE()) .AND. DUE_DATE >= DATE()) ;
  2087.     .AND. (RESP_CODE = "O")
  2088. GOTO TOP
  2089.  
  2090. CLEAR
  2091.  
  2092. DO CASE
  2093.     CASE display="S"
  2094.         CLEAR
  2095.         GOTO TOP
  2096.         @ 1,1 SAY "CONTROL#"
  2097.         @ 1,11 SAY "FROM/REFERENCE/SUBJECT"
  2098.         @ 1,61 SAY "ACTION"
  2099.         @ 1,68 SAY "DATE DUE"
  2100.         @ 2,1 SAY REPLICATE("-",77)
  2101.         R = 4
  2102.     
  2103.         DO WHILE .NOT. EOF()
  2104.             action_code = SPACE(4)
  2105.  
  2106.             DO CASE
  2107.                 CASE TYPE_COR = "M"
  2108.                     mtype = " MESSAGE"
  2109.                 CASE TYPE_COR = "L"
  2110.                     mtype = " LETTER"
  2111.                 CASE TYPE_COR = "N"
  2112.                     mtype = " NAVGRAM"
  2113.                 CASE TYPE_COR = "T"
  2114.                     mtype = " T/COMM"
  2115.                 CASE TYPE_COR = "E"
  2116.                     mtype = " E-MAIL"
  2117.                 OTHERWISE
  2118.                     mtype = SPACE (8)
  2119.             ENDCASE
  2120.  
  2121.             IF ACT_INFO_1 = "A"
  2122.                 action_code = ROUTE_1
  2123.             ENDIF
  2124.             IF ACT_INFO_2 = "A"
  2125.                 action_code = ROUTE_2
  2126.             ENDIF
  2127.             IF ACT_INFO_3 = "A"
  2128.                 action_code = ROUTE_3
  2129.             ENDIF
  2130.             IF ACT_INFO_4 = "A"
  2131.                 action_code = ROUTE_4
  2132.             ENDIF
  2133.             IF ACT_INFO_5 = "A"
  2134.                 action_code = ROUTE_5
  2135.             ENDIF
  2136.             IF ACT_INFO_6 = "A"
  2137.                 action_code = ROUTE_6
  2138.             ENDIF
  2139.             IF ACT_INFO_7 = "A"
  2140.                 action_code = ROUTE_7
  2141.             ENDIF
  2142.             IF ACT_INFO_8 = "A"
  2143.                 action_code = ROUTE_8
  2144.             ENDIF
  2145.             IF ACT_INFO_9 = "A"
  2146.                 action_code = ROUTE_9
  2147.             ENDIF
  2148.  
  2149.             @ R,1  SAY CONTROL_NO
  2150.             @ R,11 SAY RTRIM(COR_FROM) + mtype
  2151.             @ R,61 SAY action_code
  2152.             @ R,68 SAY DTOC(DUE_DATE)
  2153.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  2154.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  2155.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  2156.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  2157.             @ R+1,11 SAY mcorfile + mcorref + mcorser + mcordate
  2158.             @ R+2,11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  2159.             @ R+3,1 SAY ""
  2160.  
  2161.             IF R = 20
  2162.                 WAIT
  2163.                 @ 4,0 CLEAR
  2164.                 R = 0
  2165.             ENDIF
  2166.         
  2167.             R = R+4
  2168.             SKIP
  2169.             LOOP
  2170.         ENDDO WHILE .NOT. EOF()
  2171.  
  2172.         @ 22,1 SAY "  "
  2173.         WAIT
  2174.         CLEAR
  2175.  
  2176.     CASE display="P"
  2177.         STORE 61 TO tline
  2178.         STORE 2 TO tcolumn
  2179.         STORE 0 TO pagenum
  2180.         GOTO TOP
  2181.         SET DEVICE TO PRINT
  2182.         SET PRINT ON
  2183.  
  2184.         DO WHILE .NOT. EOF()
  2185.  
  2186.         IF tline > 55
  2187.             STORE 1 TO tline
  2188.             STORE pagenum + 1 TO pagenum
  2189.             @ tline,    tcolumn + 1  SAY "Page " + STR(pagenum,3)
  2190.             @ tline + 1,tcolumn + 1  SAY DATE()
  2191.             @ tline + 2,tcolumn + 11 SAY TRIM(mheader) + ;
  2192.                 " - CORRESPONDANCE COMING DUE"
  2193.             @ tline + 4,tcolumn + 1 SAY "CONTROL#"
  2194.             @ tline + 4,tcolumn + 11 SAY "FROM/REFERENCE/SUBJECT"
  2195.             @ tline + 4,tcolumn + 61 SAY "ACTION"
  2196.             @ tline + 4,tcolumn + 68 SAY "DATE DUE"
  2197.             STORE tline + 6 TO tline
  2198.         ENDIF
  2199.  
  2200.         action_code = SPACE(4)
  2201.  
  2202.         DO CASE
  2203.             CASE TYPE_COR = "M"
  2204.                 mtype = " MESSAGE"
  2205.             CASE TYPE_COR = "L"
  2206.                 mtype = " LETTER"
  2207.             CASE TYPE_COR = "N"
  2208.                 mtype = " NAVGRAM"
  2209.             CASE TYPE_COR = "T"
  2210.                 mtype = " T/COMM"
  2211.             CASE TYPE_COR = "E"
  2212.                 mtype = " E-MAIL"
  2213.             OTHERWISE
  2214.                 mtype = SPACE (8)
  2215.         ENDCASE
  2216.  
  2217.         IF ACT_INFO_1 = "A"
  2218.             action_code = ROUTE_1
  2219.         ENDIF
  2220.         IF ACT_INFO_2 = "A"
  2221.             action_code = ROUTE_2
  2222.         ENDIF
  2223.         IF ACT_INFO_3 = "A"
  2224.             action_code = ROUTE_3
  2225.         ENDIF
  2226.         IF ACT_INFO_4 = "A"
  2227.             action_code = ROUTE_4
  2228.         ENDIF
  2229.         IF ACT_INFO_5 = "A"
  2230.             action_code = ROUTE_5
  2231.         ENDIF
  2232.         IF ACT_INFO_6 = "A"
  2233.             action_code = ROUTE_6
  2234.         ENDIF
  2235.         IF ACT_INFO_7 = "A"
  2236.             action_code = ROUTE_7
  2237.         ENDIF
  2238.         IF ACT_INFO_8 = "A"
  2239.             action_code = ROUTE_8
  2240.         ENDIF
  2241.         IF ACT_INFO_9 = "A"
  2242.             action_code = ROUTE_9
  2243.         ENDIF
  2244.  
  2245.             @ tline,tcolumn + 1  SAY CONTROL_NO
  2246.             @ tline,tcolumn + 11 SAY RTRIM(COR_FROM) + mtype
  2247.             @ tline,tcolumn + 61 SAY action_code
  2248.             @ tline,tcolumn + 68 SAY DTOC(DUE_DATE)
  2249.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  2250.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  2251.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  2252.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  2253.             @ tline + 1,tcolumn + 11 SAY mcorfile + mcorref + mcorser + mcordate
  2254.             @ tline + 2,tcolumn + 11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  2255.             @ tline + 3,tcolumn + 1 SAY ""
  2256.     
  2257.         STORE tline + 4 TO tline
  2258.         SKIP
  2259.         LOOP
  2260.     ENDDO 
  2261.  
  2262.     EJECT
  2263.     SET DEVICE TO SCREEN
  2264.     SET PRINT OFF
  2265. ENDCASE
  2266.  
  2267. CLEAR
  2268. SET FILTER TO
  2269. GOTO TOP
  2270.  
  2271. SET TALK ON
  2272. INDEX ON SERIAL_NO TO &COR
  2273. SET TALK OFF
  2274.  
  2275. CLEAR
  2276. RETURN
  2277.  
  2278. * EOF CORRT2                                                              
  2279.  
  2280.  
  2281. ************************************************************
  2282. *                         CORRT3                           *
  2283. ************************************************************
  2284.  
  2285. PROCEDURE CORRT3
  2286. * CORRT3 Listing of PENDING items
  2287.  
  2288. CLEAR
  2289. STORE SPACE(4) TO action_code
  2290. @ 1,5 SAY "Listing of PENDING items"
  2291. @ 2,1 TO 2,78 DOUBLE
  2292.  
  2293. TEXT
  2294.  
  2295.      REPORT NAME: CORRT3
  2296.  
  2297.      PURPOSE: COR database listing of PENDING items.
  2298.  
  2299.      PRINTER REQUIREMENTS: This report uses 80 columns.
  2300.  
  2301. ENDTEXT  
  2302.  
  2303. STORE "S" TO display
  2304. @ 11,1 TO 11,78 
  2305. @ 13,5 SAY "ENTER [S] for screen, [P] for printer, [R] to return:";
  2306. GET display PICTURE "!"
  2307. SET CONFIRM OFF
  2308. READ
  2309. SET CONFIRM ON
  2310.  
  2311. CLEAR
  2312.  
  2313. IF display <> "P"
  2314.     IF display <> "S"
  2315.         RETURN
  2316.     ENDIF
  2317. ENDIF
  2318.  
  2319. CLEAR
  2320.  
  2321. SET TALK ON
  2322. INDEX ON SERIAL_NO to &COR    
  2323. SET TALK OFF
  2324.  
  2325. SET FILTER TO RESP_CODE = "O"
  2326. GOTO TOP
  2327.  
  2328. CLEAR
  2329.  
  2330. DO CASE
  2331.     CASE display="S"
  2332.         CLEAR
  2333.         GOTO TOP
  2334.         @ 1,1 SAY "CONTROL#"
  2335.         @ 1,11 SAY "FROM/REFERENCE/SUBJECT"
  2336.         @ 1,61 SAY "ACTION"
  2337.         @ 1,68 SAY "DATE DUE"
  2338.         @ 2,1 SAY REPLICATE("-",77)
  2339.         R = 4
  2340.     
  2341.         DO WHILE .NOT. EOF()
  2342.             action_code = SPACE(4)
  2343.  
  2344.             DO CASE
  2345.                 CASE TYPE_COR = "M"
  2346.                     mtype = " MESSAGE"
  2347.                 CASE TYPE_COR = "L"
  2348.                     mtype = " LETTER"
  2349.                 CASE TYPE_COR = "N"
  2350.                     mtype = " NAVGRAM"
  2351.                 CASE TYPE_COR = "T"
  2352.                     mtype = " T/COMM"
  2353.                 CASE TYPE_COR = "E"
  2354.                     mtype = " E-MAIL"
  2355.                 OTHERWISE
  2356.                     mtype = SPACE (8)
  2357.             ENDCASE
  2358.  
  2359.             IF ACT_INFO_1 = "A"
  2360.                 action_code = ROUTE_1
  2361.             ENDIF
  2362.             IF ACT_INFO_2 = "A"
  2363.                 action_code = ROUTE_2
  2364.             ENDIF
  2365.             IF ACT_INFO_3 = "A"
  2366.                 action_code = ROUTE_3
  2367.             ENDIF
  2368.             IF ACT_INFO_4 = "A"
  2369.                 action_code = ROUTE_4
  2370.             ENDIF
  2371.             IF ACT_INFO_5 = "A"
  2372.                 action_code = ROUTE_5
  2373.             ENDIF
  2374.             IF ACT_INFO_6 = "A"
  2375.                 action_code = ROUTE_6
  2376.             ENDIF
  2377.             IF ACT_INFO_7 = "A"
  2378.                 action_code = ROUTE_7
  2379.             ENDIF
  2380.             IF ACT_INFO_8 = "A"
  2381.                 action_code = ROUTE_8
  2382.             ENDIF
  2383.             IF ACT_INFO_9 = "A"
  2384.                 action_code = ROUTE_9
  2385.             ENDIF
  2386.  
  2387.             @ R,1  SAY CONTROL_NO
  2388.             @ R,11 SAY RTRIM(COR_FROM) + mtype
  2389.             @ R,61 SAY action_code
  2390.             @ R,68 SAY DTOC(DUE_DATE)
  2391.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  2392.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  2393.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  2394.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  2395.             @ R+1,11 SAY mcorfile + mcorref + mcorser + mcordate
  2396.             @ R+2,11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  2397.             @ R+3,1 SAY ""
  2398.  
  2399.             IF R = 20
  2400.                 WAIT
  2401.                 @ 4,0 CLEAR
  2402.                 R = 0
  2403.             ENDIF
  2404.         
  2405.             R = R+4
  2406.             SKIP
  2407.             LOOP
  2408.         ENDDO WHILE .NOT. EOF()
  2409.  
  2410.         @ 22,1 SAY "  "
  2411.         WAIT
  2412.         CLEAR
  2413.  
  2414.     CASE display="P"
  2415.         STORE 61 TO tline
  2416.         STORE 2 TO tcolumn
  2417.         STORE 0 TO pagenum
  2418.         GOTO TOP
  2419.         SET DEVICE TO PRINT
  2420.         SET PRINT ON
  2421.  
  2422.         DO WHILE .NOT. EOF()
  2423.  
  2424.         IF tline > 55
  2425.             STORE 1 TO tline
  2426.             STORE pagenum + 1 TO pagenum
  2427.             @ tline,    tcolumn + 1  SAY "Page " + STR(pagenum,3)
  2428.             @ tline + 1,tcolumn + 1  SAY DATE()
  2429.             @ tline + 2,tcolumn + 11 SAY TRIM(mheader) + ;
  2430.                 " - CORRESPONDANCE PENDING"
  2431.             @ tline + 4,tcolumn + 1 SAY "CONTROL#"
  2432.             @ tline + 4,tcolumn + 11 SAY "FROM/REFERENCE/SUBJECT"
  2433.             @ tline + 4,tcolumn + 61 SAY "ACTION"
  2434.             @ tline + 4,tcolumn + 68 SAY "DATE DUE"
  2435.             STORE tline + 6 TO tline
  2436.         ENDIF
  2437.  
  2438.         action_code = SPACE(4)
  2439.  
  2440.         DO CASE
  2441.             CASE TYPE_COR = "M"
  2442.                 mtype = " MESSAGE"
  2443.             CASE TYPE_COR = "L"
  2444.                 mtype = " LETTER"
  2445.             CASE TYPE_COR = "N"
  2446.                 mtype = " NAVGRAM"
  2447.             CASE TYPE_COR = "T"
  2448.                 mtype = " T/COMM"
  2449.             CASE TYPE_COR = "E"
  2450.                 mtype = " E-MAIL"
  2451.             OTHERWISE
  2452.                 mtype = SPACE (8)
  2453.         ENDCASE
  2454.  
  2455.         IF ACT_INFO_1 = "A"
  2456.             action_code = ROUTE_1
  2457.         ENDIF
  2458.         IF ACT_INFO_2 = "A"
  2459.             action_code = ROUTE_2
  2460.         ENDIF
  2461.         IF ACT_INFO_3 = "A"
  2462.             action_code = ROUTE_3
  2463.         ENDIF
  2464.         IF ACT_INFO_4 = "A"
  2465.             action_code = ROUTE_4
  2466.         ENDIF
  2467.         IF ACT_INFO_5 = "A"
  2468.             action_code = ROUTE_5
  2469.         ENDIF
  2470.         IF ACT_INFO_6 = "A"
  2471.             action_code = ROUTE_6
  2472.         ENDIF
  2473.         IF ACT_INFO_7 = "A"
  2474.             action_code = ROUTE_7
  2475.         ENDIF
  2476.         IF ACT_INFO_8 = "A"
  2477.             action_code = ROUTE_8
  2478.         ENDIF
  2479.         IF ACT_INFO_9 = "A"
  2480.             action_code = ROUTE_9
  2481.         ENDIF
  2482.  
  2483.             @ tline,tcolumn + 1  SAY CONTROL_NO
  2484.             @ tline,tcolumn + 11 SAY RTRIM(COR_FROM) + mtype
  2485.             @ tline,tcolumn + 61 SAY action_code
  2486.             @ tline,tcolumn + 68 SAY DTOC(DUE_DATE)
  2487.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  2488.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  2489.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  2490.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  2491.             @ tline + 1,tcolumn + 11 SAY mcorfile + mcorref + mcorser + mcordate
  2492.             @ tline + 2,tcolumn + 11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  2493.             @ tline + 3,tcolumn + 1 SAY ""
  2494.     
  2495.     
  2496.         STORE tline + 4 TO tline
  2497.         SKIP
  2498.         LOOP
  2499.     ENDDO 
  2500.  
  2501.     EJECT
  2502.     SET DEVICE TO SCREEN
  2503.     SET PRINT OFF
  2504. ENDCASE
  2505.  
  2506. CLEAR
  2507. SET FILTER TO
  2508. GOTO TOP
  2509.  
  2510. SET TALK ON
  2511. INDEX ON SERIAL_NO TO &COR
  2512. SET TALK OFF
  2513.  
  2514. CLEAR
  2515. RETURN
  2516.  
  2517. * EOF CORRT3                                                              
  2518.  
  2519.  
  2520. ************************************************************
  2521. *                         CORRT4                           *
  2522. ************************************************************
  2523.  
  2524. PROCEDURE CORRT4
  2525. * CORRT4 Listing of COMPLETED items
  2526.  
  2527. CLEAR
  2528. STORE SPACE(4) TO action_code
  2529. @ 1,5 SAY "Listing of COMPLETED items"
  2530. @ 2,1 TO 2,78 DOUBLE
  2531.  
  2532. TEXT
  2533.  
  2534.      REPORT NAME: CORRT4
  2535.  
  2536.      PURPOSE: COR database listing of COMPLETED items.
  2537.  
  2538.      PRINTER REQUIREMENTS: This report uses 80 columns.
  2539.  
  2540. ENDTEXT  
  2541.  
  2542. STORE "S" TO display
  2543. @ 11,1 TO 11,78 
  2544. @ 13,5 SAY "ENTER [S] for screen, [P] for printer, [R] to return:";
  2545. GET display PICTURE "!"
  2546. SET CONFIRM OFF
  2547. READ
  2548. SET CONFIRM ON
  2549.  
  2550. CLEAR
  2551.  
  2552. IF display <> "P"
  2553.     IF display <> "S"
  2554.         RETURN
  2555.     ENDIF
  2556. ENDIF
  2557.  
  2558. CLEAR
  2559.  
  2560. SET TALK ON
  2561. INDEX ON SERIAL_NO to &COR    
  2562. SET TALK OFF
  2563.  
  2564. SET FILTER TO RESP_CODE = "C"
  2565. GOTO TOP
  2566.  
  2567. CLEAR
  2568.  
  2569. DO CASE
  2570.     CASE display="S"
  2571.         CLEAR
  2572.         GOTO TOP
  2573.         @ 1,1 SAY "CONTROL#"
  2574.         @ 1,11 SAY "FROM/REFERENCE/SUBJECT"
  2575.         @ 1,61 SAY "ACTION"
  2576.         @ 1,68 SAY "DATE DUE"
  2577.         @ 2,1 SAY REPLICATE("-",77)
  2578.         R = 4
  2579.     
  2580.         DO WHILE .NOT. EOF()
  2581.             action_code = SPACE(4)
  2582.  
  2583.             DO CASE
  2584.                 CASE TYPE_COR = "M"
  2585.                     mtype = " MESSAGE"
  2586.                 CASE TYPE_COR = "L"
  2587.                     mtype = " LETTER"
  2588.                 CASE TYPE_COR = "N"
  2589.                     mtype = " NAVGRAM"
  2590.                 CASE TYPE_COR = "T"
  2591.                     mtype = " T/COMM"
  2592.                 CASE TYPE_COR = "E"
  2593.                     mtype = " E-MAIL"
  2594.                 OTHERWISE
  2595.                     mtype = SPACE (8)
  2596.             ENDCASE
  2597.  
  2598.             IF ACT_INFO_1 = "A"
  2599.                 action_code = ROUTE_1
  2600.             ENDIF
  2601.             IF ACT_INFO_2 = "A"
  2602.                 action_code = ROUTE_2
  2603.             ENDIF
  2604.             IF ACT_INFO_3 = "A"
  2605.                 action_code = ROUTE_3
  2606.             ENDIF
  2607.             IF ACT_INFO_4 = "A"
  2608.                 action_code = ROUTE_4
  2609.             ENDIF
  2610.             IF ACT_INFO_5 = "A"
  2611.                 action_code = ROUTE_5
  2612.             ENDIF
  2613.             IF ACT_INFO_6 = "A"
  2614.                 action_code = ROUTE_6
  2615.             ENDIF
  2616.             IF ACT_INFO_7 = "A"
  2617.                 action_code = ROUTE_7
  2618.             ENDIF
  2619.             IF ACT_INFO_8 = "A"
  2620.                 action_code = ROUTE_8
  2621.             ENDIF
  2622.             IF ACT_INFO_9 = "A"
  2623.                 action_code = ROUTE_9
  2624.             ENDIF
  2625.  
  2626.             @ R,1  SAY CONTROL_NO
  2627.             @ R,11 SAY RTRIM(COR_FROM) + mtype
  2628.             @ R,61 SAY action_code
  2629.             @ R,68 SAY DTOC(DUE_DATE)
  2630.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  2631.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  2632.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  2633.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  2634.             @ R+1,11 SAY mcorfile + mcorref + mcorser + mcordate
  2635.             @ R+2,11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  2636.             @ R+3,1 SAY ""
  2637.  
  2638.             IF R = 20
  2639.                 WAIT
  2640.                 @ 4,0 CLEAR
  2641.                 R = 0
  2642.             ENDIF
  2643.         
  2644.             R = R+4
  2645.             SKIP
  2646.             LOOP
  2647.         ENDDO WHILE .NOT. EOF()
  2648.  
  2649.         @ 22,1 SAY "  "
  2650.         WAIT
  2651.         CLEAR
  2652.  
  2653.     CASE display="P"
  2654.         STORE 61 TO tline
  2655.         STORE 2 TO tcolumn
  2656.         STORE 0 TO pagenum
  2657.         GOTO TOP
  2658.         SET DEVICE TO PRINT
  2659.         SET PRINT ON
  2660.  
  2661.         DO WHILE .NOT. EOF()
  2662.  
  2663.         IF tline > 55
  2664.             STORE 1 TO tline
  2665.             STORE pagenum + 1 TO pagenum
  2666.             @ tline,    tcolumn + 1  SAY "Page " + STR(pagenum,3)
  2667.             @ tline + 1,tcolumn + 1  SAY DATE()
  2668.             @ tline + 2,tcolumn + 11 SAY TRIM(mheader) + ;
  2669.                 " - CORRESPONDANCE COMPLETED"
  2670.             @ tline + 4,tcolumn + 1 SAY "CONTROL#"
  2671.             @ tline + 4,tcolumn + 11 SAY "FROM/REFERENCE/SUBJECT"
  2672.             @ tline + 4,tcolumn + 61 SAY "ACTION"
  2673.             @ tline + 4,tcolumn + 68 SAY "DATE DUE"
  2674.             STORE tline + 6 TO tline
  2675.         ENDIF
  2676.  
  2677.         action_code = SPACE(4)
  2678.  
  2679.         DO CASE
  2680.             CASE TYPE_COR = "M"
  2681.                 mtype = " MESSAGE"
  2682.             CASE TYPE_COR = "L"
  2683.                 mtype = " LETTER"
  2684.             CASE TYPE_COR = "N"
  2685.                 mtype = " NAVGRAM"
  2686.             CASE TYPE_COR = "T"
  2687.                 mtype = " T/COMM"
  2688.             CASE TYPE_COR = "E"
  2689.                 mtype = " E-MAIL"
  2690.             OTHERWISE
  2691.                 mtype = SPACE (8)
  2692.         ENDCASE
  2693.  
  2694.         IF ACT_INFO_1 = "A"
  2695.             action_code = ROUTE_1
  2696.         ENDIF
  2697.         IF ACT_INFO_2 = "A"
  2698.             action_code = ROUTE_2
  2699.         ENDIF
  2700.         IF ACT_INFO_3 = "A"
  2701.             action_code = ROUTE_3
  2702.         ENDIF
  2703.         IF ACT_INFO_4 = "A"
  2704.             action_code = ROUTE_4
  2705.         ENDIF
  2706.         IF ACT_INFO_5 = "A"
  2707.             action_code = ROUTE_5
  2708.         ENDIF
  2709.         IF ACT_INFO_6 = "A"
  2710.             action_code = ROUTE_6
  2711.         ENDIF
  2712.         IF ACT_INFO_7 = "A"
  2713.             action_code = ROUTE_7
  2714.         ENDIF
  2715.         IF ACT_INFO_8 = "A"
  2716.             action_code = ROUTE_8
  2717.         ENDIF
  2718.         IF ACT_INFO_9 = "A"
  2719.             action_code = ROUTE_9
  2720.         ENDIF
  2721.  
  2722.             @ tline,tcolumn + 1  SAY CONTROL_NO
  2723.             @ tline,tcolumn + 11 SAY RTRIM(COR_FROM) + mtype
  2724.             @ tline,tcolumn + 61 SAY action_code
  2725.             @ tline,tcolumn + 68 SAY DTOC(DUE_DATE)
  2726.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  2727.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  2728.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  2729.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  2730.             @ tline + 1,tcolumn + 11 SAY mcorfile + mcorref + mcorser + mcordate
  2731.             @ tline + 2,tcolumn + 11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  2732.             @ tline + 3,tcolumn + 1 SAY ""
  2733.     
  2734.         STORE tline + 4 TO tline
  2735.         SKIP
  2736.         LOOP
  2737.     ENDDO 
  2738.  
  2739.     EJECT
  2740.     SET DEVICE TO SCREEN
  2741.     SET PRINT OFF
  2742. ENDCASE
  2743.  
  2744. CLEAR
  2745. SET FILTER TO
  2746. GOTO TOP
  2747.  
  2748. SET TALK ON
  2749. INDEX ON SERIAL_NO TO &COR
  2750. SET TALK OFF
  2751.  
  2752. CLEAR
  2753. RETURN
  2754.  
  2755. * EOF CORRT4
  2756.  
  2757.  
  2758. ************************************************************
  2759. *                         CORRT5                           *
  2760. ************************************************************
  2761.  
  2762. PROCEDURE CORRT5
  2763. * CORRT5 Serial log of outgoing correspondance
  2764. CLEAR
  2765. @ 1,5 SAY "Serial log of outgoing correspondance"
  2766. @ 2,1 TO 2,78 DOUBLE
  2767.  
  2768. TEXT
  2769.  
  2770.      REPORT NAME: CORRT5
  2771.  
  2772.      PURPOSE: Program will filter out all records except outgoing cor-
  2773.      respondance and display same in serial sequence.
  2774.  
  2775.      PRINTER REQUIREMENTS: This report uses 132 columns.
  2776.  
  2777. ENDTEXT  
  2778.  
  2779. STORE "S" TO display
  2780. @ 11,1 TO 11,78 
  2781. @ 13,5 SAY "ENTER [S] for screen, [P] for printer, [R] to return:";
  2782. GET display PICTURE "!"
  2783. SET CONFIRM OFF
  2784. READ
  2785. SET CONFIRM ON
  2786.  
  2787. IF display <> "P"
  2788.     IF display <> "S"
  2789.         RETURN
  2790.     ENDIF
  2791. ENDIF
  2792.  
  2793. GOTO BOTT
  2794. mstop = SERIAL_NO
  2795. GOTO TOP
  2796. mstart = SERIAL_NO
  2797.  
  2798. @ 15,5 SAY "Enter STARTING SERIAL_NO (nnnn format)" GET mstart PICTURE "9999"
  2799. @ 16,5 SAY "Enter ENDING   SERIAL_NO (nnnn format)" GET mstop  PICTURE "9999"
  2800. READ
  2801. CLEAR
  2802.  
  2803. SET FILTER TO (SERIAL_NO >= mstart .AND. SERIAL_NO <= mstop)
  2804. GOTO TOP
  2805.  
  2806. IF display = "P"
  2807.     REPORT FORM CORRT5 FOR RESP_CODE = "X" TO PRINT
  2808. ELSE
  2809.     REPORT FORM CORRT5 FOR RESP_CODE = "X" 
  2810.     WAIT
  2811. ENDIF
  2812.  
  2813. SET FILTER TO
  2814. GOTO TOP
  2815.  
  2816. RETURN
  2817.  
  2818. * EOF CORRT5
  2819.  
  2820.  
  2821.  
  2822. ************************************************************
  2823. *                         CORRT6                           *
  2824. ************************************************************
  2825.  
  2826. PROCEDURE CORRT6
  2827. * CORRT6 Listing of COMPLETED items
  2828.  
  2829. CLEAR
  2830. STORE SPACE(4) TO action_code
  2831. @ 1,5 SAY "Listing of COMPLETED items"
  2832. @ 2,1 TO 2,78 DOUBLE
  2833.  
  2834. TEXT
  2835.  
  2836.      REPORT NAME: CORRT6
  2837.  
  2838.      PURPOSE: COROLD database listing of ARCHIVED completed items.
  2839.      The program will look for this database on the archive drive.
  2840.  
  2841.      PRINTER REQUIREMENTS: This report uses 80 columns.
  2842.  
  2843. ENDTEXT  
  2844.  
  2845. STORE "S" TO display
  2846. @ 11,1 TO 11,78 
  2847. @ 13,5 SAY "ENTER [S] for screen, [P] for printer, [R] to return:";
  2848. GET display PICTURE "!"
  2849. SET CONFIRM OFF
  2850. READ
  2851. SET CONFIRM ON
  2852.  
  2853. IF display <> "P"
  2854.     IF display <> "S"
  2855.         RETURN
  2856.     ENDIF
  2857. ENDIF
  2858.  
  2859. @ 15,5 SAY "ENTER drive with COROLD.DBF files:" GET ARC_DRV PICTURE "!!"
  2860. @ 16,5 SAY "[Blank to exit]"
  2861. READ
  2862.  
  2863. IF ARC_DRV = "  "
  2864.     CLEAR
  2865.     RETURN
  2866. ENDIF
  2867. IF ARC_DRV = ": "
  2868.     CLEAR
  2869.     RETURN
  2870. ENDIF
  2871. IF ARC_DRV = " :"
  2872.     CLEAR
  2873.     RETURN
  2874. ENDIF
  2875.  
  2876. CLEAR
  2877. STORE ARC_DRV +"COROLD" TO COROLD
  2878. SET DEFA TO &ARC_DRV
  2879.  
  2880. IF .NOT. FILE("COROLD.DBF")
  2881.     ? CHR(7)
  2882.     @ 23,5 SAY "COROLD.DBF does not exist on drive " + ARC_DRV +;
  2883.         " - please try again!"
  2884.     WAIT ""
  2885.     SET DEFA TO &PRG_DRV
  2886.     RETURN
  2887. ENDIF
  2888.  
  2889. SELECT 3
  2890. USE &COROLD INDEX &COROLD
  2891.  
  2892. CLEAR
  2893.  
  2894. SET TALK ON
  2895. INDEX ON SERIAL_NO to &COROLD
  2896. SET TALK OFF
  2897.  
  2898. DO CASE
  2899.     CASE display="S"
  2900.         CLEAR
  2901.         GOTO TOP
  2902.         @ 1,1 SAY "CONTROL#"
  2903.         @ 1,11 SAY "FROM/REFERENCE/SUBJECT"
  2904.         @ 1,61 SAY "ACTION"
  2905.         @ 1,68 SAY "DATE DUE"
  2906.         @ 2,1 SAY REPLICATE("-",77)
  2907.         R = 4
  2908.     
  2909.         DO WHILE .NOT. EOF()
  2910.             action_code = SPACE(4)
  2911.  
  2912.             DO CASE
  2913.                 CASE TYPE_COR = "M"
  2914.                     mtype = " MESSAGE"
  2915.                 CASE TYPE_COR = "L"
  2916.                     mtype = " LETTER"
  2917.                 CASE TYPE_COR = "N"
  2918.                     mtype = " NAVGRAM"
  2919.                 CASE TYPE_COR = "T"
  2920.                     mtype = " T/COMM"
  2921.                 CASE TYPE_COR = "E"
  2922.                     mtype = " E-MAIL"
  2923.                 OTHERWISE
  2924.                     mtype = SPACE (8)
  2925.             ENDCASE
  2926.  
  2927.             IF ACT_INFO_1 = "A"
  2928.                 action_code = ROUTE_1
  2929.             ENDIF
  2930.             IF ACT_INFO_2 = "A"
  2931.                 action_code = ROUTE_2
  2932.             ENDIF
  2933.             IF ACT_INFO_3 = "A"
  2934.                 action_code = ROUTE_3
  2935.             ENDIF
  2936.             IF ACT_INFO_4 = "A"
  2937.                 action_code = ROUTE_4
  2938.             ENDIF
  2939.             IF ACT_INFO_5 = "A"
  2940.                 action_code = ROUTE_5
  2941.             ENDIF
  2942.             IF ACT_INFO_6 = "A"
  2943.                 action_code = ROUTE_6
  2944.             ENDIF
  2945.             IF ACT_INFO_7 = "A"
  2946.                 action_code = ROUTE_7
  2947.             ENDIF
  2948.             IF ACT_INFO_8 = "A"
  2949.                 action_code = ROUTE_8
  2950.             ENDIF
  2951.             IF ACT_INFO_9 = "A"
  2952.                 action_code = ROUTE_9
  2953.             ENDIF
  2954.  
  2955.             @ R,1  SAY CONTROL_NO
  2956.             @ R,11 SAY RTRIM(COR_FROM) + mtype
  2957.             @ R,61 SAY action_code
  2958.             @ R,68 SAY DTOC(DUE_DATE)
  2959.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  2960.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  2961.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  2962.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  2963.             @ R+1,11 SAY mcorfile + mcorref + mcorser + mcordate
  2964.             @ R+2,11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  2965.             @ R+3,1 SAY ""
  2966.  
  2967.             IF R = 20
  2968.                 WAIT
  2969.                 @ 4,0 CLEAR
  2970.                 R = 0
  2971.             ENDIF
  2972.         
  2973.             R = R+4
  2974.             SKIP
  2975.             LOOP
  2976.         ENDDO WHILE .NOT. EOF()
  2977.  
  2978.         @ 22,1 SAY "  "
  2979.         WAIT
  2980.         CLEAR
  2981.  
  2982.     CASE display="P"
  2983.         STORE 61 TO tline
  2984.         STORE 2 TO tcolumn
  2985.         STORE 0 TO pagenum
  2986.         GOTO TOP
  2987.         SET DEVICE TO PRINT
  2988.         SET PRINT ON
  2989.  
  2990.         DO WHILE .NOT. EOF()
  2991.  
  2992.         IF tline > 55
  2993.             STORE 1 TO tline
  2994.             STORE pagenum + 1 TO pagenum
  2995.             @ tline,    tcolumn + 1  SAY "Page " + STR(pagenum,3)
  2996.             @ tline + 1,tcolumn + 1  SAY DATE()
  2997.             @ tline + 2,tcolumn + 11 SAY TRIM(mheader) + ;
  2998.                 " - CORRESPONDANCE COMPLETED"
  2999.             @ tline + 4,tcolumn + 1 SAY "CONTROL#"
  3000.             @ tline + 4,tcolumn + 11 SAY "FROM/REFERENCE/SUBJECT"
  3001.             @ tline + 4,tcolumn + 61 SAY "ACTION"
  3002.             @ tline + 4,tcolumn + 68 SAY "DATE DUE"
  3003.             STORE tline + 6 TO tline
  3004.         ENDIF
  3005.  
  3006.         action_code = SPACE(4)
  3007.  
  3008.         DO CASE
  3009.             CASE TYPE_COR = "M"
  3010.                 mtype = " MESSAGE"
  3011.             CASE TYPE_COR = "L"
  3012.                 mtype = " LETTER"
  3013.             CASE TYPE_COR = "N"
  3014.                 mtype = " NAVGRAM"
  3015.             CASE TYPE_COR = "T"
  3016.                 mtype = " T/COMM"
  3017.             CASE TYPE_COR = "E"
  3018.                 mtype = " E-MAIL"
  3019.             OTHERWISE
  3020.                 mtype = SPACE (8)
  3021.         ENDCASE
  3022.  
  3023.         IF ACT_INFO_1 = "A"
  3024.             action_code = ROUTE_1
  3025.         ENDIF
  3026.         IF ACT_INFO_2 = "A"
  3027.             action_code = ROUTE_2
  3028.         ENDIF
  3029.         IF ACT_INFO_3 = "A"
  3030.             action_code = ROUTE_3
  3031.         ENDIF
  3032.         IF ACT_INFO_4 = "A"
  3033.             action_code = ROUTE_4
  3034.         ENDIF
  3035.         IF ACT_INFO_5 = "A"
  3036.             action_code = ROUTE_5
  3037.         ENDIF
  3038.         IF ACT_INFO_6 = "A"
  3039.             action_code = ROUTE_6
  3040.         ENDIF
  3041.         IF ACT_INFO_7 = "A"
  3042.             action_code = ROUTE_7
  3043.         ENDIF
  3044.         IF ACT_INFO_8 = "A"
  3045.             action_code = ROUTE_8
  3046.         ENDIF
  3047.         IF ACT_INFO_9 = "A"
  3048.             action_code = ROUTE_9
  3049.         ENDIF
  3050.  
  3051.             @ tline,tcolumn + 1  SAY CONTROL_NO
  3052.             @ tline,tcolumn + 11 SAY RTRIM(COR_FROM) + mtype
  3053.             @ tline,tcolumn + 61 SAY action_code
  3054.             @ tline,tcolumn + 68 SAY DTOC(DUE_DATE)
  3055.             mcorfile = IIF(COR_FILE=SPACE(5),"00000",RTRIM(COR_FILE))
  3056.             mcorref  = IIF(COR_REF_NO=SPACE(14),"","/" + RTRIM(COR_REF_NO))
  3057.             mcorser  = IIF(COR_SER_NO=SPACE(5),"",", Serial " + RTRIM(COR_SER_NO))
  3058.             mcordate = IIF(DTOC(COR_DATE)="  /  /  ",""," of " + DTOC(COR_DATE))
  3059.             @ tline + 1,tcolumn + 11 SAY mcorfile + mcorref + mcorser + mcordate
  3060.             @ tline + 2,tcolumn + 11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  3061.             @ tline + 3,tcolumn + 1 SAY ""
  3062.     
  3063.         STORE tline + 4 TO tline
  3064.         SKIP
  3065.         LOOP
  3066.     ENDDO 
  3067.  
  3068.     EJECT
  3069.     SET DEVICE TO SCREEN
  3070.     SET PRINT OFF
  3071. ENDCASE
  3072.  
  3073. CLEAR
  3074. SET FILTER TO
  3075. GOTO TOP
  3076.  
  3077. SET TALK ON
  3078. INDEX ON SERIAL_NO TO &COROLD
  3079. SET TALK OFF
  3080. USE
  3081. SET DEFAULT TO &PRG_DRV
  3082. SELECT 1
  3083.  
  3084. CLEAR
  3085. RETURN
  3086.  
  3087. * EOF CORRT6
  3088.  
  3089.  
  3090. ************************************************************
  3091. *                         CORRTE                           *
  3092. ************************************************************
  3093.  
  3094. PROCEDURE CORRTE
  3095. * CORRTE.PRG Print route sheets or labels
  3096.  
  3097. CLEAR
  3098. @ 1,5 SAY "PRINT route sheets or labels for use with action correspondance"
  3099. @ 2,1 TO 2,78 DOUBLE
  3100.  
  3101. TEXT
  3102.  
  3103.      PROGRAM: CORRTE.PRG
  3104.  
  3105.      PURPOSE: Select printing of cover route sheets or labels
  3106.  
  3107.      Labels may be attached to correspondance vice route sheets.  This
  3108.      may be beneficial where extensive staffing is not required for 
  3109.      most correspondance.
  3110.  
  3111. ENDTEXT
  3112.  
  3113. @ 13,1 TO 13,78
  3114. STORE "R" TO rchoice
  3115. @ 15,5 SAY "Print route Sheets [S], labels [L], or Return [R]?" GET rchoice PICTURE "!"
  3116. SET CONFIRM OFF
  3117. READ
  3118. SET CONFIRM ON
  3119. CLEAR
  3120.  
  3121. IF rchoice = "S"
  3122.     DO CORRTE1
  3123. ENDIF
  3124.  
  3125. IF rchoice = "L"
  3126.     DO CORRTE2
  3127. ENDIF
  3128.  
  3129. RETURN
  3130. * EOF CORRTE.PRG             
  3131.  
  3132.  
  3133. ************************************************************
  3134. *                         CORRTE1                          *
  3135. ************************************************************
  3136.  
  3137. PROCEDURE CORRTE1
  3138. * CORRTE1.PRG - Print route sheets
  3139.  
  3140. CLEAR
  3141. GOTO TOP
  3142. STORE YY + "-0000" TO mstart
  3143. STORE YY + "-0000" TO mstop
  3144. STORE "Y" TO pchoice
  3145. STORE "U N C L A S S I F I E D - U N C L A S S I F I E D - U N C L A S S I F I E D" TO msg1
  3146. STORE "C O N F I D E N T I A L - C O N F I D E N T I A L - C O N F I D E N T I A L" TO msg2
  3147. STORE "S E C R E T - S E C R E T - S E C R E T - S E C R E T - S E C R E T - S E C" TO msg3
  3148. STORE "T O P   S E C R E T - T O P   S E C R E T - T O P   S E C R E T - T O P   S" TO msg4
  3149. STORE 2 TO tline
  3150. STORE 0 TO tcolumn
  3151.  
  3152. @ 1,5 SAY "PRINT Route Sheets"
  3153. @ 2,1 TO 2,78 DOUBLE
  3154.  
  3155. TEXT
  3156.  
  3157.      PROGRAM: CORRTE1.PRG
  3158.  
  3159.      PURPOSE: This program will print "Route" sheets or cover sheets for action
  3160.      correspondance.  The program will query for which sheets to print.
  3161.  
  3162.      REQUIREMENTS: Uses an 80 character printer.
  3163.  
  3164. ENDTEXT
  3165. @ 12,1 TO 12,78
  3166. @ 14, 5 SAY "Print all route sheets not previously printed?" GET pchoice PICTURE "Y"
  3167. SET CONFIRM OFF
  3168. READ
  3169. SET CONFIRM ON
  3170.  
  3171. IF pchoice = "N"
  3172.     @  14, 5
  3173.     @  14, 5 SAY "Enter starting CONTROL_NO:" GET mstart PICTURE "!!-!!!!"
  3174.     @  16, 5 SAY "Enter ending   CONTROL_NO:" GET mstop PICTURE "!!-!!!!"
  3175.     READ
  3176.     val_mstart = VAL(SUBSTR(mstart,4,4))
  3177.     val_mstop = VAL(SUBSTR(mstop,4,4))
  3178.     SET FILTER TO (SERIAL_NO >= val_mstart ;
  3179.         .AND. SERIAL_NO <= val_mstop)
  3180.     GOTO TOP
  3181.  
  3182.     IF val_mstart > val_mstop
  3183.         ?? CHR(7)
  3184.         @ 20,5 SAY "STOP value should be greater than START value!"
  3185.         WAIT ""
  3186.         SET FILTER TO
  3187.         GOTO TOP
  3188.         RETURN
  3189.     ENDIF VAL(
  3190.  
  3191.     IF val_mstop = 0
  3192.         ?? CHR(7)
  3193.         @ 20,5 SAY "You have selected NO records!"
  3194.         WAIT ""
  3195.         SET FILTER TO
  3196.         GOTO TOP
  3197.         RETURN
  3198.     ENDIF VAL(SUBS
  3199.  
  3200. ELSE
  3201.     SET FILTER TO .NOT. PRNFLG
  3202.     GOTO TOP
  3203. ENDIF pchoice
  3204.  
  3205. CLEAR
  3206.  
  3207. * -----------------------------------------------Print routine
  3208. SET DEVICE TO PRINT
  3209. SET PRINT ON
  3210.  
  3211. DO WHILE .NOT. EOF()
  3212.  
  3213.     DO CASE
  3214.         CASE CLASSIF = "U"
  3215.             msg = msg1
  3216.         CASE CLASSIF = "C"
  3217.             msg = msg2
  3218.         CASE CLASSIF = "S"
  3219.             msg = msg3
  3220.         CASE CLASSIF = "T"
  3221.             msg = msg4
  3222.     OTHERWISE
  3223.             msg = SPACE(1)
  3224.     ENDCASE
  3225.  
  3226.     DO CASE
  3227.         CASE TYPE_COR = "M"
  3228.             mtype = " MESSAGE"
  3229.         CASE TYPE_COR = "L"
  3230.             mtype = " LETTER"
  3231.         CASE TYPE_COR = "N"
  3232.             mtype = " NAVGRAM"
  3233.         CASE TYPE_COR = "T"
  3234.             mtype = " T/COMM"
  3235.         CASE TYPE_COR = "E"
  3236.             mtype = " E-MAIL"
  3237.     OTHERWISE
  3238.             mtype = SPACE (8)
  3239.     ENDCASE
  3240.     
  3241.     action_code = SPACE(4)
  3242.  
  3243.     IF ACT_INFO_1 = "A"
  3244.         action_code = ROUTE_1
  3245.     ENDIF
  3246.     IF ACT_INFO_2 = "A"
  3247.         action_code = ROUTE_2
  3248.     ENDIF
  3249.     IF ACT_INFO_3 = "A"
  3250.         action_code = ROUTE_3
  3251.     ENDIF
  3252.     IF ACT_INFO_4 = "A"
  3253.         action_code = ROUTE_4
  3254.     ENDIF
  3255.     IF ACT_INFO_5 = "A"
  3256.         action_code = ROUTE_5
  3257.     ENDIF
  3258.     IF ACT_INFO_6 = "A"
  3259.         action_code = ROUTE_6
  3260.     ENDIF
  3261.     IF ACT_INFO_7 = "A"
  3262.         action_code = ROUTE_7
  3263.     ENDIF
  3264.     IF ACT_INFO_8 = "A"
  3265.         action_code = ROUTE_8
  3266.     ENDIF
  3267.     IF ACT_INFO_9 = "A"
  3268.         action_code = ROUTE_9
  3269.     ENDIF
  3270.  
  3271.     @ tline + 6,  tcolumn + 1  SAY  msg
  3272.     @ tline + 7,  tcolumn + 1  SAY  msg
  3273.     @ tline + 8,  tcolumn + 1  SAY  msg
  3274.     @ tline + 9,  tcolumn + 1  SAY  msg
  3275.     @ tline + 11, tcolumn + 1  SAY "ROUTE SHEET - Correspondance Attached - Return to MAILROOM when completed"
  3276.     @ tline + 14, tcolumn + 1  SAY "CONTROL#"
  3277.     @ tline + 14, tcolumn + 11 SAY "FROM/REFERENCE/SUBJECT"
  3278.     @ tline + 14, tcolumn + 61 SAY "ACTION"
  3279.     @ tline + 14, tcolumn + 68 SAY "DATE DUE"
  3280.     @ tline + 16, tcolumn + 1  SAY CONTROL_NO
  3281.     @ tline + 16, tcolumn + 11 SAY RTRIM(COR_FROM) + mtype
  3282.     @ tline + 16, tcolumn + 61 SAY action_code
  3283.     @ tline + 16, tcolumn + 68 SAY DTOC(DUE_DATE)
  3284.     @ tline + 17 ,tcolumn + 11 SAY RTRIM(COR_FILE) ;
  3285.         + ";" +    RTRIM(COR_REF_NO) + ;
  3286.         ", Serial " + RTRIM(COR_SER_NO) + ;
  3287.         " of " + DTOC(COR_DATE)
  3288.     @ tline + 18, tcolumn + 11 SAY "SUBJ: " + RTRIM(COR_SUBJ)
  3289.     @ tline + 28, tcolumn +  1 SAY "ROUTING:"
  3290.     @ tline + 28, tcolumn + 10 SAY  COR->ROUTE_1 ;
  3291.         + " " + IIF(ACT_INFO_1="A","ACTION",IIF(ACT_INFO_1="I","Information",""))
  3292.     @ tline + 28, tcolumn + 35 SAY  COR->ROUTE_4 ;
  3293.         + " " + IIF(ACT_INFO_4="A","ACTION",IIF(ACT_INFO_4="I","Information",""))
  3294.     @ tline + 28, tcolumn + 60 SAY  COR->ROUTE_7 ;
  3295.         + " " + IIF(ACT_INFO_7="A","ACTION",IIF(ACT_INFO_7="I","Information",""))
  3296.     @ tline + 33, tcolumn + 10 SAY  COR->ROUTE_2 ;
  3297.         + " " + IIF(ACT_INFO_2="A","ACTION",IIF(ACT_INFO_2="I","Information",""))
  3298.     @ tline + 33, tcolumn + 35 SAY  COR->ROUTE_5 ;
  3299.         + " " + IIF(ACT_INFO_5="A","ACTION",IIF(ACT_INFO_5="I","Information",""))
  3300.     @ tline + 33, tcolumn + 60 SAY  COR->ROUTE_8 ;
  3301.         + " " + IIF(ACT_INFO_8="A","ACTION",IIF(ACT_INFO_8="I","Information",""))
  3302.     @ tline + 38, tcolumn + 10 SAY  COR->ROUTE_3 ;
  3303.         + " " + IIF(ACT_INFO_3="A","ACTION",IIF(ACT_INFO_3="I","Information",""))
  3304.     @ tline + 38, tcolumn + 35 SAY  COR->ROUTE_6 ;
  3305.         + " " + IIF(ACT_INFO_6="A","ACTION",IIF(ACT_INFO_6="I","Information",""))
  3306.     @ tline + 38, tcolumn + 60 SAY  COR->ROUTE_9 ;
  3307.         + " " + IIF(ACT_INFO_9="A","ACTION",IIF(ACT_INFO_9="I","Information",""))
  3308.     @ tline + 43, tcolumn +  1 SAY  "REMARKS: "
  3309.     @ tline + 56, tcolumn +  1 SAY  msg
  3310.     @ tline + 57, tcolumn +  1 SAY  msg
  3311.     @ tline + 58, tcolumn +  1 SAY  msg
  3312.     @ tline + 59, tcolumn +  1 SAY  msg
  3313.     REPLACE PRNFLG WITH .T.
  3314.     EJECT
  3315.     SKIP
  3316.     LOOP
  3317. ENDDO .NOT. EOF()
  3318.  
  3319. SET FILTER TO
  3320. GOTO TOP
  3321. SET DEVICE TO SCREEN
  3322. SET PRINT OFF
  3323.  
  3324. RETURN
  3325. * EOF CORRTE1.PRG
  3326.  
  3327.  
  3328. ************************************************************
  3329. *                         CORRTE2                          *
  3330. ************************************************************
  3331.  
  3332. PROCEDURE CORRTE2
  3333. * CORRTE2.PRG - Print labels
  3334.  
  3335. CLEAR
  3336. GOTO TOP
  3337. STORE YY + "-0000" TO mstart
  3338. STORE YY + "-0000" TO mstop
  3339. STORE "Y" TO pchoice
  3340.  
  3341. @ 1,5 SAY "PRINT Labels"
  3342. @ 2,1 TO 2,78 DOUBLE
  3343.  
  3344. TEXT
  3345.  
  3346.      PROGRAM: CORRTE2.PRG
  3347.  
  3348.      PURPOSE: This program will print two stick-on labels for action
  3349.      correspondance.  The program will query for which labels to print.
  3350.  
  3351.      REQUIREMENTS: Uses an 80 character printer.  The printing is designed
  3352.      for (3.5" x 15/16" by 1) tractor feed labels.
  3353.  
  3354. ENDTEXT
  3355. @ 13,1 TO 13,78
  3356. @ 15, 5 SAY "Print all labels not previously printed?" GET pchoice PICTURE "Y"
  3357. SET CONFIRM OFF
  3358. READ
  3359. SET CONFIRM ON
  3360.  
  3361. IF pchoice = "N"
  3362.     @  15, 5
  3363.     @  15, 5 SAY "Enter starting CONTROL_NO:" GET mstart PICTURE "!!-!!!!"
  3364.     @  17, 5 SAY "Enter ending   CONTROL_NO:" GET mstop PICTURE "!!-!!!!"
  3365.     READ
  3366.     val_mstart = VAL(SUBSTR(mstart,4,4))
  3367.     val_mstop = VAL(SUBSTR(mstop,4,4))
  3368.     SET FILTER TO (SERIAL_NO >= val_mstart ;
  3369.         .AND. SERIAL_NO <= val_mstop)
  3370.     GOTO TOP
  3371.  
  3372.     IF val_mstart > val_mstop
  3373.         ?? CHR(7)
  3374.         @ 20,5 SAY "STOP value should be greater than START value!"
  3375.         WAIT ""
  3376.         SET FILTER TO
  3377.         GOTO TOP
  3378.         RETURN
  3379.     ENDIF 
  3380.  
  3381.     IF val_mstop = 0
  3382.         ?? CHR(7)
  3383.         @ 20,5 SAY "You have selected NO records!"
  3384.         WAIT ""
  3385.         SET FILTER TO
  3386.         GOTO TOP
  3387.         RETURN
  3388.     ENDIF 
  3389.  
  3390. ELSE
  3391.     SET FILTER TO .NOT. PRNFLG
  3392.     GOTO TOP
  3393. ENDIF pchoice
  3394.  
  3395. CLEAR
  3396.  
  3397. * -----------------------------------------------Print routine
  3398. SET DEVICE TO PRINT
  3399. SET PRINT ON
  3400. ?? CHR(27) + CHR(67) + CHR(6)
  3401. @ 0,0 
  3402.  
  3403. DO WHILE .NOT. EOF()
  3404.     @  1,  1  SAY "CONTROL NUMBER: " + COR->CONTROL_NO
  3405.     @  1, 27  SAY "ACTION"
  3406.     @  2,  1  SAY "DATE RESP DUE: " + DTOC(COR->DUE_DATE)
  3407.     @  2, 27  SAY "COPY"
  3408.     @  3,  1  SAY  COR->ROUTE_1 + " " + COR->ACT_INFO_1
  3409.     @  3, 11  SAY  COR->ROUTE_4 + " " + COR->ACT_INFO_4
  3410.     @  3, 21  SAY  COR->ROUTE_7 + " " + COR->ACT_INFO_7
  3411.     @  4,  1  SAY  COR->ROUTE_2 + " " + COR->ACT_INFO_2
  3412.     @  4, 11  SAY  COR->ROUTE_5 + " " + COR->ACT_INFO_5
  3413.     @  4, 21  SAY  COR->ROUTE_8 + " " + COR->ACT_INFO_8
  3414.     @  5,  1  SAY  COR->ROUTE_3 + " " + COR->ACT_INFO_3
  3415.     @  5, 11  SAY  COR->ROUTE_6 + " " + COR->ACT_INFO_6
  3416.     @  5, 21  SAY  COR->ROUTE_9 + " " + COR->ACT_INFO_9
  3417.     EJECT
  3418.     @  1,  1  SAY "CONTROL NUMBER: " + COR->CONTROL_NO
  3419.     @  1, 27  SAY "INFO"
  3420.     @  2,  1  SAY "DATE RESP DUE: " + DTOC(COR->DUE_DATE)
  3421.     @  2, 27  SAY "COPY"
  3422.     @  3,  1  SAY  COR->ROUTE_1 + " " + COR->ACT_INFO_1
  3423.     @  3, 11  SAY  COR->ROUTE_4 + " " + COR->ACT_INFO_4
  3424.     @  3, 21  SAY  COR->ROUTE_7 + " " + COR->ACT_INFO_7
  3425.     @  4,  1  SAY  COR->ROUTE_2 + " " + COR->ACT_INFO_2
  3426.     @  4, 11  SAY  COR->ROUTE_5 + " " + COR->ACT_INFO_5
  3427.     @  4, 21  SAY  COR->ROUTE_8 + " " + COR->ACT_INFO_8
  3428.     @  5,  1  SAY  COR->ROUTE_3 + " " + COR->ACT_INFO_3
  3429.     @  5, 11  SAY  COR->ROUTE_6 + " " + COR->ACT_INFO_6
  3430.     @  5, 21  SAY  COR->ROUTE_9 + " " + COR->ACT_INFO_9
  3431.     EJECT
  3432.     REPLACE PRNFLG WITH .T.
  3433.     SKIP
  3434.     LOOP
  3435. ENDDO .NOT. EOF()
  3436.  
  3437. SET FILTER TO
  3438. GOTO TOP
  3439. ?? CHR(27) + CHR(67) + CHR(80)
  3440. SET DEVICE TO SCREEN
  3441. SET PRINT OFF
  3442.  
  3443. RETURN
  3444. * EOF CORRTE2.PRG
  3445.  
  3446.  
  3447. ************************************************************
  3448. *                         CORUTI                           *
  3449. ************************************************************
  3450.  
  3451. PROCEDURE CORUTI
  3452. * CORUTI Calling program for UTILITIES menu
  3453.  
  3454. DO WHILE .T.
  3455.     CLEAR
  3456.     STORE "R" TO rptnmbr
  3457.     @  2,15 SAY "Utilities Menu"
  3458.     @  5,15 SAY "NR. MODULE"
  3459.     @  5,55 SAY " "+ DTOC(DATE())
  3460.     @  7,15 SAY "[1] BACKUP or archive database"
  3461.     @  8,15 SAY "[2] DELETE line items"
  3462.     @  9,15 SAY "[3] Reset document NUMBER"
  3463.     @ 10,15 SAY "[4] Archive COMPLETED items"
  3464.     @ 11,15 SAY "[5] Reset FILE drive"
  3465.     @ 12,15 SAY "[6] ReINDEX"
  3466.     @ 13,15 SAY "[7] SUSPEND"
  3467.     @ 14,15 SAY "[8] Access to OPERATING system"
  3468.     @ 15,15 SAY "[9] Not used..."
  3469.     @ 17,15 SAY "[R] RETURN to main menu"
  3470.     @ 19,15 SAY "ENTER choice:" GET rptnmbr PICTURE "!"
  3471.     @ 1,1 TO 21,78 DOUBLE
  3472.     @ 3,2 TO 3,77
  3473.     SET CONFIRM OFF
  3474.     READ
  3475.     SET CONFIRM ON
  3476.     CLEAR
  3477. * SELECTIONS
  3478.     DO CASE
  3479. * Backup or archive
  3480.         CASE rptnmbr = "1" .OR. rptnmbr = "B"
  3481.             DO CORBAK
  3482. * Delete record
  3483.         CASE rptnmbr = "2" .OR. rptnmbr = "D"
  3484.             DO CORDEL
  3485. * Reset next record number
  3486.         CASE rptnmbr = "3" .OR. rptnmbr = "N"
  3487.             DO CORDUM
  3488. * Store completed items
  3489.         CASE rptnmbr = "4" .OR. rptnmbr = "C"
  3490.             DO COROLD
  3491. * Reset file drive designation
  3492.         CASE rptnmbr = "5" .OR. rptnmbr = "F"
  3493.             DO CORCHG
  3494. * Reindex
  3495.             CASE rptnmbr = "6" .OR. rptnmbr = "I"
  3496.             SET TALK ON
  3497.             CLOSE DATABASES
  3498.             SELECT 1
  3499.             USE &COR INDEX &COR
  3500.             SELECT 4
  3501.             USE &CORKEY INDEX &CORKEY
  3502.             SELECT 1
  3503.             SET TALK ON
  3504.             INDEX ON SERIAL_NO TO &COR
  3505.             SELECT 4
  3506.             INDEX ON KEYWORD_C TO &CORKEY
  3507.             SET TALK OFF
  3508.             USE
  3509.             SELECT 1
  3510.             CLEAR
  3511. * Suspend operation to dBASE
  3512.             CASE rptnmbr = "7" .OR. rptnmbr = "S"
  3513.             SET MESSAGE TO "Type RESUME to return to COR_LOG"
  3514.             SET STATUS ON
  3515.             SUSPEND
  3516.             CLOSE DATABASES
  3517.             SELECT 1
  3518.             USE COR INDEX COR
  3519.             SET STATUS OFF
  3520.             SET MESSAGE TO
  3521. * Command processor
  3522.             CASE rptnmbr = "8" .OR. rptnmbr = "O"
  3523.             RUN COMMAND
  3524. * Return to main menu
  3525.             CASE rptnmbr = "R"
  3526.                 RETURN
  3527.     OTHERWISE
  3528.         CLEAR
  3529.         ? CHR(7)
  3530.         @ 22,25 SAY "ILLEGAL ANSWER - TRY AGAIN"
  3531.         WAIT " "
  3532.      ENDCASE
  3533. ENDDO
  3534.  
  3535.  
  3536. * EOF CORUTI
  3537.  
  3538.  
  3539. ************************************************************
  3540. *                         CORSETUP                         *
  3541. ************************************************************
  3542.  
  3543. PROCEDURE CORSETUP
  3544. * CORSETUP - USE TO SETUP FOR CORMAIN PROGRAM
  3545. STORE "A:" TO NEWFILE_DRV
  3546. STORE "A:" TO ARC_DRV
  3547. STORE "C:" TO FILE_DRV
  3548. STORE "C:" TO PRG_DRV
  3549. STORE SPACE(6) TO UIC
  3550. STORE SPACE(40) TO ORGANIZ
  3551. STORE "W+/B,N/W,B,B       " TO mcolor
  3552. STORE "W,I   " TO mbw
  3553. STORE "N" TO mdelim
  3554. STORE "Correspondance Control Log     " TO mheader
  3555. *------------------------------------------------
  3556. CLEAR
  3557. @ 2, 20 SAY "CORLOG SETUP PROGRAM"
  3558. @ 4,1 TO 4,78
  3559. @ 7,1 SAY "Enter logical or physical disk drive for program:        " ;
  3560.     GET prg_drv PICTURE "!!"
  3561. @ 8,1 SAY "Enter logical or physical disk drive for files:          " ;
  3562.     GET file_drv PICTURE "!!"
  3563. @ 9,1 SAY "Enter alternate drive for more files:                    " ;
  3564.     GET newfile_drv PICTURE "!!"
  3565. @ 10,1 SAY "Enter logical or physical disk drive for archiving:      " ;
  3566.     GET arc_drv PICTURE "!!"
  3567. @ 11,1 SAY "[These are starting default values, they can be changed in" ;
  3568.     + " the program]"
  3569. @ 13,1 SAY "Use delimiters (brackets) around entry fields? {Y/N}     " ;
  3570.     GET mdelim PICTURE "Y"
  3571. @ 15,1 SAY "Enter six-digit organization code (alphanumeric):        " ;
  3572.     GET uic PICTURE "!!!!!!"
  3573. @ 16,1 SAY "Enter program title:        " ;
  3574.     GET mheader PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  3575. @ 17,1 SAY "Enter organizational title: " ;
  3576.     GET organiz PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  3577. @ 19,1 SAY "Color display codes (see dBASE SET COLOR instr.):        " ;
  3578.     GET mcolor PICTURE "!!!!!!!!!!!!!!!!!"
  3579. @ 21,1 SAY "Black and white display codes:                           " ; 
  3580.     GET mbw PICTURE "!!!!!!"
  3581. READ
  3582. SAVE TO CORMEM.MEM
  3583. CLEAR
  3584. RETURN
  3585.  
  3586. * EOF CORSETUP
  3587. * EOP COR.PRG
  3588.  
  3589.