Previous Topic: Step 5: Define the DialogsNext Topic: Dialog ARCD2


Dialog ARCD1

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.