Previous Topic: Dialog RESD1Next Topic: Dialog RESD3


Dialog RESD2

Dialog RESD2 processes archived employee records. RESD2 finds the requested employee record in the archive file and restores it. It then performs another read operation to begin reading associated coverage records; if a coverage record is read, control passes automatically to dialog RESD3.

The dialog definition for RESD2 is illustrated below:

The premap process, mapin operation, and response process are shown below.

Dialog RESD2: Premap Process

!**********************************************************************
!*RESD2-PM                                                            *
!*  -EXECUTED AT THE BEGINNING OF DLG RESD2.                          *
!*  -IN THIS APPLICATION, CONTROL PASSES HERE WHEN:                   *
!*      -RESD1 PASSES CONTROL TO RESD2 IN ORDER TO FIND AND           *
!*       RESTORE THE REQUESTED EMPLOYEE RECORD.                       *
!*      -RESD2-RESPONSE ISSUES A CONTINUE COMMAND AFTER AN            *
!*       EMPLOYEE RECORD HAS BEEN READ SO THAT RESD2-PM CAN PROCESS   *
!*       THE RECORD.                                                  *
!*      -DLG RESD3 IS TO READ THE NEXT RECORD FROM THE                *
!*       ARCHIVE FILE, BUT THE NEXT RECORD IS AN EMPLOYEE RECORD.     *
!*       IN THIS CASE, CONTROL PASSES AUTOMATICALLY BACK TO RESD2,    *
!*       AS SPECIFIED BY THE APPLICATION DEFINITION.                  *
!*      -RESD2-PM PROCESSES THE MOST RECENTLY READ ARCHIVE FILE.      *
!*      -NOTE THAT THE PREMAP PROCESS ASSUMES THAT BOTH THE INPUT     *
!*       AND ARCHIVE FILE RECORDS ARE ORDERED BY EMP ID.              *
!*      -NOTE THAT WORK-STATUS IS SET TO 'RESTORED' WHEN THE          *
!*       REQUESTED EMP HAS BEEN RESTORED ONTO THE DATABASE.           *
!**********************************************************************
READY USAGE-MODE UPDATE.
!
!
!*************************************************
!*-IF THE ARCHIVED RECORD HAS BEEN RESTORED,     *
!* RETURN TO RESD1 TO READ THE NEXT INPUT        *
!* RECORD.                                       *
!*************************************************
IF WORK-STATUS = 'RESTORED'
  RETURN.
!
!
!*************************************************
!*-WORK-ARC-ID IS THE ID OF THE MOST RECENTLY    *
!* READ ARCHIVED EMP REC.                        *
!*-INPUT-ID IS THE ID OF THE EMP-REC TO BE       *
!* RESTORED.                                     *
!*-IF THERE IS A MATCH, RESTORE THE EMP REC,     *
!* MOVE 'RESTORED' TO WORK-STATUS, THEN          *
!* READ THE NEXT ARCHIVE FILE RECORD IN ORDER    *
!* TO RESTORED THE EMPLOYEE'S ASSOCIATED         *
!* COVERAGE RECORDS.                             *
!*************************************************
IF WORK-ARC-ID = INPUT-ID
  DO.
  CALL RESTRTN.
  MOVE 'RESTORED' TO WORK-STATUS.
  READ TRANSACTION.
  END.
!
!
!*************************************************
!*-WORK-ARC-ID > INPUT ID MEANS THAT NO MATCH    *
!* WAS FOUND.                                    *
!*-IN THIS CASE, MOVE 'NOT FOUND' TO WORK-       *
!* STATUS, AND RETURN TO RESD1.                  *
!*************************************************
IF WORK-ARC-ID > INPUT-ID
  DO.
  MOVE 'NOT FOUND' TO WORK-STATUS.
  RETURN.
  END.
!
!
!*************************************************
!*-WORK-ARC-ID < INPUT ID (THE ONLY REMAINING    *
!* POSSIBILITY) MEANS THAT THE ARCHIVE FILE      *
!* SHOULD BE READ UNTIL A MATCH IS FOUND OR      *
!* UNTIL THE ARCHIVE EMP ID IS GREATER THAN      *
!* THE INPUT EMP ID.                             *
!*************************************************
READ TRANSACTION.
!
!
!*************************************************
!*SUBROUTINE RESTRTN                             *
!*-CALLED WHEN A MATCH IS FOUND.                 *
!*-SET CURRENCY ON EMPLOYEE'S OFFICE AND         *
!* DEPARTMENT, WHOSE IDS WERE ARCHIVED ALONG     *
!* WITH THE RECORD.                              *
!*-ON ANY DATABASE RROR, ABORT THE APPL.         *
!*-RESTORE THE ARCHIVED EMPLOYEE RECORD ONTO     *
!* THE DATABASE.                                 *
!*************************************************
DEFINE RESTRTN.
  FIND CALC OFFICE.
  IF DB-ANY-ERROR
    ABORT TEXT '***DB ERROR ON FIND OFFICE***'.
  FIND CALC DEPARTMENT.
  IF DB-ANY-ERROR
    ABORT TEXT '***DB ERROR ON FIND DEPARTMENT***'.
  STORE EMPLOYEE.
  IF DB-ANY-ERROR
    ABORT TEXT '***DB ERROR ON STORE EMPLOYEE***'.
  GOBACK.

Dialog RESD2: Mapin Operation

External field                  Internal field
ARCHIVE-TYPE...................>$RESPONSE
ARCHIVE-DEPT-ID................>DEPT-ID-0410
ARCHIVE-OFFICE-CODE............>OFFICE-CODE-0450
ARCHIVE-EMPLOYEE-RECORD........>$ARCHIVE-EMPLOYEE-RECORD

Dialog RESD2: Response Process

!**********************************************************************
!*RESD2-RESPONSE                                                      *
!*  -EXECUTED AFTER AN EMPLOYEE RECORD HAS BEEN READ FROM THE         *
!*   ARCHIVE FILE, OR AFTER AN ARCHIVE FILE EOF.  RESD2'S DEFAULT     *
!*   RESPONSE PROCESS.                                                *
!*  -PASSES CONTROL AS APPROPRIATE, DEPENDING ON CURRENT              *
!*   CONDITIONS.                                                      *
!**********************************************************************
!
!
!*************************************************
!*-ON ARCHIVE FILE EOF, MOVE EOF TO WORK-        *
!* ARCFILE-STATUS.                               *
!*-IF THE REQUESTED EMPLOYEE HAS NOT BEEN RE-    *
!* STORED, MOVE 'NOT FOUND' TO WORK-STATUS       *
!*-RETURN TO RESD1.                              *
!*************************************************
IF $EOF
  DO.
  MOVE 'EOF' TO WORK-ARCFILE-STATUS.
  IF WORK-STATUS NE 'RESTORED'
    MOVE 'NOT FOUND' TO WORK-STATUS.
  ELSE
    NEXT.
  RETURN.
  END.
!
!
!*************************************************
!*-MOVE THE ARCHIVED RECORD TO THE EMPLOYEE      *
!* DATABASE RECORD.                              *
!*-MOVE THE EMP ID TO WORK-ARC-ID (ID OF THE     *
!* MOST RECENTLY READ ARCHIVED EMP REC).         *
!*-REEXECUTE THE PREMAP PROCESS TO PROCESS       *
!* THE RECORD JUST READ.                         *
!*************************************************
MOVE ARCHIVE-EMPLOYEE-RECORD TO EMPLOYEE.
MOVE EMP-ID-0415 TO WORK-ARC-ID.
CONTINUE.