Dialog ARCD1 executes at the beginning of the application. ARCD1 reads an input file that contains a list of ids of employee records to be archived. ARCD1 serves as a mainline dialog, passing control to other dialogs, as required, to archive the employee and associated coverage records and to write report lines to a report file. ARCD1 also writes erroneous input records to a suspense file.
The dialog definition for ARCD1 is illustrated below:

The premap process, mapin operation, and response process are shown below.
Dialog ARCD1: Premap Process
!********************************************************************** !*ARCD1-PM * !* -EXECUTED ONCE AT THE BEGINNING OF THE APPLICATION WHEN * !* DLG ARCD1 BEGINS EXECUTION. * !* -PERFORMS APPLICATION INITIALIZATION, THEN READS THE FIRST * !* INPUT RECORD. * !********************************************************************** CALL INIT. READ TRANSACTION. ! ! !************************************************* !*SUBROUTINE INIT * !*-SET UP FOR TRANSACTION REPORT. * !************************************************* DEFINE INIT. MOVE DATE TO WORK-DATE-YYMMDD. MOVE WORK-YY1 TO WORK-YY2. MOVE WORK-MM1 TO WORK-MM2. MOVE WORK-DD1 TO WORK-DD2. MOVE WORK-DATE-MMDDYY TO REPORT-DATE. MOVE 55 TO WORK-LINE-CTR. GOBACK.
Dialog ARCD1: Mapin Operation
External field Internal field INPUT-ID.......................>INPUT-ID
Dialog ARCD1: Response Process
!********************************************************************** !*ARCD1-RESPONSE * !* -EXECUTED AFTER DLG ARCD1'S MAPIN OPERATION. DEFAULT RESPONSE * !* PROCESS FOR ARCD1. * !* -PERFORMS MAINLINE PROCESSING OF INPUT RECORD. * !********************************************************************** READY USAGE-MODE UPDATE. ! ! !************************************************* !*-TERMINATE APPLICATION ON AN EOF CONDITION * !************************************************* IF $EOF DO. WRITE LOG TEXT '***EOF ON INPUT***'. LEAVE APPLICATION. END. ! ! !************************************************* !*-INPUT-ID CONTAINS THE ID OF THE EMP REC * !* TO BE ARCHIVED. * !*-ATTEMPT TO RETRIEVE THE RECORD FROM THE * !* DATABASE. * !*-IF THE RECORD DOES NOT EXIST, CALL AN * !* ERROR ROUTINE. * !*-ON ANY OTHER DB ERROR, TERMINATE THE APP. * !************************************************* MOVE INPUT-ID TO EMP-ID-0415. OBTAIN CALC EMPLOYEE. IF DB-REC-NOT-FOUND CALL ERRRTN. IF DB-ANY-ERROR ABORT TEXT 'DB ERROR ON EMPLOYEE OBTAIN'. ! ! !************************************************* !*-PASS CONTROL TO DLG ARCD2, WHICH ARCHIVES * !* THE EMPLOYEE RECORD. * !*-PASS CONTROL TO DLG ARCD3, WHICH ARCHIVES * !* THE ASSOCIATED COVERAGE RECORDS. * !************************************************* LINK NOSAVE 'ARCD2'. LINE NOSAVE 'ARCD3'. ! ! !************************************************* !*-SET UP FOR TRANSACTION REPORT, THEN PASS * !* CONTROL TO DLG ARCD4, WHICH, ALONG WITH * !* ARCD5, WRITE A REPORT LINE. * !************************************************* MOVE 'RECORD ARCHIVED' TO REPORT-STATUS. MOVE EMP-ID-0415 TO REPORT-ID. MOVE EMP-LAST-NAME-0415 TO REPORT-LNAME. MOVE EMP-FIRST-NAME-0415 TO REPORT-FNAME. LINK NOSAVE 'ARCD4'. ! ! !************************************************* !*-DELETE THE EMPLOYEE RECORD FROM THE * !* DATABASE ALONG WITH ALL COVERAGE RECORDS. * !*-ON ANY DB ERROR, TERMINATE THE APPL. * !************************************************* OBTAIN CALC EMPLOYEE. ERASE EMPLOYEE ALL MEMBERS. IF DB-ANY-ERROR ABORT TEXT 'DB ERROR ON EMPLOYEE ERASE'. ! ! !************************************************* !*-READ THE NEXT INPUT RECORD. * !************************************************* READ TRANSACTION. ! ! !************************************************* !*SUBROUTINE ERRRTN * !*-CALLED WHEN THE REQUESTED EMP REC IS NOT * !* FOUND IN THE DATABASE * !*-SET UP FOR TRANSACTION REPORT, THEN * !* PASS CONTROL TO ARCD4, WHICH, ALONG WITH * !* ARCD5, WRITES A REPORT LINE. * !*-SET INPUT-ID OF THE INPUT MAP IN ERROR. * !*-ISSUE WRITE TRANSACTION COMMAND, WHICH * !* WRITES THE INPUT RECORD TO THE SUSPENSE * !* FILE, THEN READS THE NEXT INPUT RECORD. * !************************************************* DEFINE ERRRTN. MOVE 'RECORD NOT FOUND' TO REPORT-STATUS. MOVE EMP-ID-0415 TO REPORT-ID. MOVE SPACES TO REPORT-FNAME. MOVE SPACES TO REPORT-LNAME. LINK NOSAVE 'ARCD4'. MODIFY MAP TEMP FOR (INPUT-ID) EDIT ERROR. WRITE TRANSACTION.
|
Copyright © 2013 CA.
All rights reserved.
|
|