DSN8CC2
ROUTER FOR SECONDARY SELECTION AND/OR DETAIL PROCESSING CALLS SECONDARY SELECTION MODULES DSN8MCA DSN8MCM CALLS DETAIL MODULES DSN8MCD DSN8MCE DSN8MCF DSN8MCT DSN8MCV DSN8MCW DSN8MCX DSN8MCZ CALLED BY DSN8MC1 (SQL1) .
IDENTIFICATION DIVISION.
*------------------------
PROGRAM-ID. DSN8CC2.
************* DSN8CC2 - COMMON MODULE FOR CICS - COBOL***********
* *
* MODULE NAME = DSN8CC2 *
* *
* DESCRIPTIVE NAME = DB2 SAMPLE APPLICATION *
* SQL 2 COMMON MODULE *
* CICS *
* COBOL *
* *
*Licensed Materials - Property of IBM *
*5605-DB2 *
*(C) COPYRIGHT 1982, 2010 IBM Corp. All Rights Reserved. *
* *
*STATUS = Version 10 *
* *
* *
* *
* FUNCTION = ROUTER FOR SECONDARY SELECTION AND/OR *
* DETAIL PROCESSING *
* CALLS SECONDARY SELECTION MODULES *
* DSN8MCA DSN8MCM *
* CALLS DETAIL MODULES *
* DSN8MCD DSN8MCE DSN8MCF *
* DSN8MCT DSN8MCV DSN8MCW DSN8MCX DSN8MCZ *
* CALLED BY DSN8MC1 (SQL1) *
* *
* NOTES = NONE *
* *
* *
* MODULE TYPE = *
* PROCESSOR = DB2 PRECOMPILER, CICS TRANSLATOR, *
* VS COBOL *
* MODULE SIZE = SEE LINKEDIT *
* ATTRIBUTES = REUSABLE *
* *
* ENTRY POINT = DSN8CC2 *
* PURPOSE = SEE FUNCTION *
* LINKAGE = NONE *
* INPUT = *
* *
* SYMBOLIC LABEL/NAME = COMMPTR *
* DESCRIPTION = POINTER TO COMMAREA *
* (COMMUNICATION AREA) *
* *
* OUTPUT = *
* *
* SYMBOLIC LABEL/NAME = COMMPTR *
* DESCRIPTION = POINTER TO COMMAREA *
* (COMMUNICATION AREA) *
* *
* EXIT-NORMAL = RETURN CODE 0 NORMAL COMPLETION *
* *
* EXIT-ERROR = *
* IF SQLERROR OR SQLWARNING, SQL WHENEVER CONDITION *
* SPECIFIED IN DSN8CC2 WILL BE RAISED AND PROGRAM *
* WILL GO TO THE LABEL DB-ERROR. *
* *
* *
* RETURN CODE = NONE *
* *
* *
* ABEND CODES = NONE *
* *
* ERROR-MESSAGES = *
* DSN8062E-AN OBJECT WAS NOT SELECTED *
* DSN8066E-UNSUPPORTED PFK OR LOGIC ERROR *
* DSN8072E-INVALID SELECTION ON SECONDARY SCREEN *
* *
* EXTERNAL REFERENCES = NONE *
* ROUTINES/SERVICES = 10 MODULES LISTED ABOVE *
* DSN8MCG - ERROR MESSAGE ROUTINE *
* *
* DATA-AREAS = *
* DSN8MCA - SECONDARY SELECTION FOR ORGANIZATION *
* DSN8MCAD - DECLARE ADMINISTRATION DETAIL *
* DSN8MCAE - CURSOR EMPLOYEE LIST *
* DSN8MCAL - CURSOR ADMINISTRATION LIST *
* DSN8MCA2 - DECLARE ADMINISTRATION DETAIL *
* DSN8MCCA - COMMON AREA *
* DSN8MCC2 - COMMON AREA PART 2 *
* DSN8MCD - DEPARTMENT STRUCTURE DETAIL *
* DSN8MCDA - CURSOR ADMINISTRATION DETAIL *
* DSN8MCDH - CURSOR FOR DISPLAY TEXT FROM *
* TDSPTXT TABLE *
* DSN8MCDM - DECLARE DEPARTMENT MANAGER *
* DSN8MCDP - DECLARE DEPARTMENT *
* DSN8MCDT - DECLARE DISPLAY TEXT *
* DSN8MCE - DEPARTMENT DETAIL *
* DSN8MCEM - DECLARE EMPLOYEE *
* DSN8MCED - DECLARE EMPLOYEE-DEPARTMENT *
* DSN8MCF - EMPLOYEE DETAIL *
* DSN8MCOV - DECLARE OPTION VALIDATION *
* DSN8MCXX - ERROR HANDLER *
* *
* CONTROL-BLOCKS = *
* SQLCA - SQL COMMUNICATION AREA *
* *
* TABLES = NONE *
* *
* CHANGE-ACTIVITY = *
* - ADD NEW VARIABLES FOR REFERENTIAL INTEGRITY V2R1 *
* - 10/18/2005 PK03311 INITIALIZE UNINITIALIZED STORAGE @01 *
* *
* *PSEUDOCODE* *
* *
* THIS MODULE DETERMINES WHICH SECONDARY SELECTION AND/OR *
* DETAIL MODULE(S) ARE TO BE CALLED IN THE CICS/COBOL *
* ENVIRONMENT. *
* *
* WHAT HAS HAPPENED SO FAR?.............THE SUBSYSTEM *
* DEPENDENT MODULE (IMS,CICS,TSO) OR (SQL 0) HAS *
* READ THE INPUT SCREEN, FORMATTED THE INPUT AND PASSED CONTROL *
* TO SQL 1. SQL 1 PERFORMS VALIDATION ON THE SYSTEM DEPENDENT *
* FIELDS (MAJOR SYSTEM, ACTION, OBJECT, SEARCH CRITERIA). IF *
* ALL SYSTEM FIELDS ARE VALID SQL 1 PASSED CONTROL TO THIS *
* MODULE. PASSED PARAMETERS CONSIST ONLY OF A POINTER WHICH *
* POINTS TO A COMMUNICATION CONTROL AREA USED TO COMMUNICATE *
* BETWEEN SQL 0 , SQL 1, SQL 2 AND THE SECONDARY SELECTION *
* AND DETAIL MODULES. *
* *
*WHAT IS INCLUDED IN THIS MODULE?............. *
* ALL SECONDARY SELECTION AND DETAIL MODULES ARE 'INCLUDED'. *
* ALL VARIABLES KNOWN IN THIS PROCEDURE ARE KNOWN IN THE *
* SUB PROCEDURES. ALL SQL CURSOR DEFINITIONS AND *
* SQL 'INCLUDES' ARE DONE IN THIS PROCEDURE. BECAUSE OF THE *
* RESTRICTION THAT CURSOR HOST VARIABLES MUST BE DECLARED BEFORE*
* THE CURSOR DEFINITION ALL CURSOR HOST VARIABLES ARE DECLARED *
* IN THIS PROCEDURE. *
* *
* PROCEDURE *
* IF ANSWER TO DETAIL SCREEN AND DETAIL PROCESSOR *
* IS NOT WILLING TO ACCEPT AN ANSWER THEN *
* NEW REQUEST* *
* *
* ELSE *
* IF ANSWER TO A SECONDARY SELECTION THEN *
* DETERMINE IF NEW REQUEST. *
* *
* *
* *
* CASE (NEW REQUEST) *
* *
* SUBCASE ('ADD') *
* DETAIL PROCESSOR *
* RETURN TO SQL 1 *
* ENDSUB *
* *
* SUBCASE ('ERASE','DISPLAY','UPDATE') *
* CALL SECONDARY SELECTION *
* IF # OF POSSIBLE CHOICES IS ^= 1 THEN *
* RETURN TO SQL 1 *
* ELSE *
* CALL THE DETAIL PROCESSOR *
* RETURN TO SQL 1 *
* ENDSUB *
* *
* ENDCASE *
* *
* IF ANSWER TO SECONDARY SELECTION AND A SELECTION HAS *
* ACTUALLY BEEN MADE THEN *
* IF IT IS A VALID SELECTION NUMBER THEN *
* CALL DETAIL PROCESSOR *
* RETURN TO SQL 1 *
* END *
* *
* ELSE *
* PRINT ERROR MSG *
* RETURN TO SQL 1 *
* END. *
* *
* IF ANSWER TO SECONDARY SELECTION THEN *
* CALL SECONDARY SELECTION *
* RETURN TO SQL 1 *
* END. *
* *
* IF ANSWER TO DETAIL THEN *
* CALL DETAIL PROCESSOR *
* RETURN TO SQL 1 *
* END. *
* *
* RETURN TO SQL 1. *
* *
* END. *
* *
* *EXAMPLE- A ROW IS SUCCESSFULLY ADDED, THE OPERATOR RECEIVES*
* THE SUCCESSFULLY ADDED MESSAGE AND JUST HITS ENTER. *
*---------------------------------------------------------------*
ENVIRONMENT DIVISION.
*---------------------
DATA DIVISION.
*-------------
WORKING-STORAGE SECTION.
***************************************
* FIELDS SENT TO MESSAGE ROUTINE *
***************************************
01 MSGCODE PIC X(04).
01 OUTMSG PIC X(69).
***************************************
* NULL INDICATOR *
***************************************
01 NULLIND1 PIC S9(4) COMP-4.
01 NULLIND2 PIC S9(4) COMP-4.
01 NULLIND3 PIC S9(4) COMP-4.
01 NULLIND4 PIC S9(4) COMP-4.
01 NULLIND5 PIC S9(4) COMP-4.
01 NULLARRY.
03 NULLARRY1 PIC S9(4) USAGE COMP OCCURS 13 TIMES.
EXEC SQL INCLUDE SQLCA END-EXEC.
EXEC SQL INCLUDE DSN8MCC2 END-EXEC.
EXEC SQL INCLUDE DSN8MCDP END-EXEC.
EXEC SQL INCLUDE DSN8MCEM END-EXEC.
EXEC SQL INCLUDE DSN8MCDM END-EXEC.
EXEC SQL INCLUDE DSN8MCAD END-EXEC.
EXEC SQL INCLUDE DSN8MCA2 END-EXEC.
EXEC SQL INCLUDE DSN8MCOV END-EXEC.
EXEC SQL INCLUDE DSN8MCDT END-EXEC.
EXEC SQL INCLUDE DSN8MCED END-EXEC.
01 CONSTRAINTS.
03 PARM-LENGTH PIC S9(4) COMP-4.
03 REF-CONSTRAINT PIC X(08).
03 FILLER PIC X(62).
01 MGRNO-CONSTRAINT PIC X(08) VALUE 'RDE '.
LINKAGE SECTION.
01 DFHCOMMAREA.
EXEC SQL INCLUDE DSN8MCCA END-EXEC.
PROCEDURE DIVISION.
*------------------
EXEC SQL INCLUDE DSN8MCAE END-EXEC.
EXEC SQL INCLUDE DSN8MCAL END-EXEC.
EXEC SQL INCLUDE DSN8MCDH END-EXEC.
EXEC SQL INCLUDE DSN8MCDA END-EXEC.
***********************************************************
* SQL RETURN CODE HANDLING *
***********************************************************
EXEC SQL WHENEVER SQLERROR GO TO DB-ERROR END-EXEC
EXEC SQL WHENEVER SQLWARNING GO TO DB-ERROR END-EXEC.
***********************************************************
* INITIALIZATIONS *
***********************************************************
MOVE 'DSN8CC2' TO MAJOR.
MOVE SPACES TO MINOR.
* INIT AREA INCLUDED BY DSN8MCDP @01
MOVE SPACES TO PDEPT.
* INIT AREA INCLUDED BY DSN8MCEM @01
MOVE SPACES TO PEMP.
* INIT AREA INCLUDED BY DSN8MCDM @01
MOVE SPACES TO PDEPMGR.
* INIT AREA INCLUDED BY DSN8MCAD @01
MOVE SPACES TO PASTRDET.
* INIT AREA INCLUDED BY DSN8MCA2 @01
MOVE SPACES TO PASTRDE2.
* INIT AREA INCLUDED BY DSN8MCOV @01
MOVE SPACES TO POPTVAL.
* INIT AREA INCLUDED BY DSN8MCDT @01
MOVE SPACES TO PDSPTXT.
* INIT AREA INCLUDED BY DSN8MCED @01
MOVE SPACES TO PEMPDPT1.
***********************************************************
* DETERMINES WHETHER NEW REQUEST OR NOT *
***********************************************************
IC200B.
IF PREV OF PCONVSTA = ' ' THEN
MOVE 'Y' TO NEWREQ OF COMPARM.
IF NEWREQ OF COMPARM = 'N' AND PREV OF PCONVSTA = 'S'
AND DATA01 NOT = ' '
AND PFKIN NOT = '08'
THEN MOVE 'Y' TO NEWREQ OF COMPARM.
IF NEWREQ OF COMPARM NOT = 'Y' THEN
GO TO IC2010.
***********************************************************
* IF NEW REQUEST AND ACTION IS 'ADD' THEN *
* CALL DETAIL PROCESSOR *
* ELSE CALL SECONDARY SELECTION *
***********************************************************
IF ACTION OF INAREA = 'A' THEN
* **DETAIL PROCESSOR
GO TO DETAIL0.
* **SECONDARY SELECTION
PERFORM SECSEL THRU END-SECSEL.
* **IF NO. OF CHOICES = 1
* **GO TO DETAIL PROCESSOR
IF MAXSEL = 1 THEN
GO TO DETAIL0.
GO TO EXITO.
***********************************************************
* DETERMINES IF VALID SELECTION NUMBER *
***********************************************************
IC2010.
* **VALID SELECTION NO. GIVEN
IF PREV OF PCONVSTA NOT = 'S' OR
MAXSEL < 1 OR
PFKIN = '08' OR
DATA2 = DATO2 THEN
GO TO IC201.
* **DETAIL SELECTION GIVEN
IF DAT1 NUMERIC AND DAT2 = ' ' THEN
MOVE DAT1 TO DAT2
MOVE '0' TO DAT1.
IF DATA2 NUMERIC
AND DATA2 > '00' AND DATA2 NOT > MAXSEL THEN
MOVE 'Y' TO NEWREQ OF COMPARM
GO TO DETAIL0.
* **INVALID SELECTION NO.
* **PRINT ERROR MESSAGE
MOVE '072E' TO MSGCODE.
CALL 'DSN8MCG' USING MAJOR MSGCODE OUTMSG.
MOVE OUTMSG TO MSG OF OUTAREA.
GO TO EXITO.
***********************************************************
* DETERMINES WHETHER SECONDARY SELECTION OR DETAIL *
***********************************************************
IC201.
* **SECONDARY SELECTION
IF PREV OF PCONVSTA = 'S' THEN
PERFORM SECSEL THRU END-SECSEL
GO TO EXITO
ELSE
* **DETAIL PROCESSOR
IF PREV OF PCONVSTA = 'D' THEN GO TO DETAIL0.
* **LOGIC ERROR
* **PRINT ERROR MESSAGE
MOVE '066E' TO MSGCODE.
CALL 'DSN8MCG' USING MAJOR MSGCODE OUTMSG.
MOVE OUTMSG TO MSG OF OUTAREA.
GO TO EXITO.
* **HANDLES ERRORS
EXEC SQL INCLUDE DSN8MCXX END-EXEC.
GO TO EXITO.
***********************************************************
* CALLS SECONDARY SELECTION AND RETURNS TO SQL 1 *
***********************************************************
SECSEL.
MOVE 'DSN8001' TO LASTSCR IN PCONVSTA.
* **ADMINISTRATIVE
* **DEPARTMENT STRUCTURE
IF OBJFLD OF INAREA = 'DS' THEN
PERFORM DSN8MCA THRU END-DSN8MCA
ELSE
* **INDIVIDUAL DEPARTMENT
* **PROCESSING
IF OBJFLD OF INAREA = 'DE' THEN
PERFORM DSN8MCA THRU END-DSN8MCA
ELSE
* **INDIVIDUAL EMPLOYEE
* **PROCESSING
IF OBJFLD OF INAREA = 'EM' THEN
PERFORM DSN8MCA THRU END-DSN8MCA
ELSE
* **ERROR MESSAGE
* **MISSING SECONDARY SEL
MOVE '062E' TO MSGCODE
CALL 'DSN8MCG' USING MAJOR MSGCODE OUTMSG
MOVE OUTMSG TO MSG OF OUTAREA
GO TO EXITO.
END-SECSEL.
***********************************************************
* CALLS DETAIL PROCESSOR AND RETURNS TO SQL 1 *
***********************************************************
DETAIL0.
MOVE 'DSN8002' TO LASTSCR IN PCONVSTA.
* **ADMINISTRATIVE
* **DEPARTMENT STRUCTURE
IF OBJFLD OF INAREA = 'DS' THEN
PERFORM DSN8MCD THRU END-DSN8MCD
ELSE
* **INDIVIDUAL DEPARTMENT
* **PROCESSING
IF OBJFLD OF INAREA = 'DE' THEN
PERFORM DSN8MCE THRU END-DSN8MCE
ELSE
* **INDIVIDUAL EMPLOYEE
* **PROCESSING
IF OBJFLD OF INAREA = 'EM' THEN
PERFORM DSN8MCF THRU END-DSN8MCF
ELSE
* **ERROR MESSAGE
* **MISSING DETAIL MODULE
MOVE '062E' TO MSGCODE
CALL 'DSN8MCG' USING MAJOR MSGCODE OUTMSG
MOVE OUTMSG TO MSG OF OUTAREA.
GO TO EXITO.
* **RETURNS TO SQL 1
EXITO.
EXEC CICS RETURN END-EXEC.
EXEC SQL INCLUDE DSN8MCA END-EXEC.
EXEC SQL INCLUDE DSN8MCD END-EXEC.
EXEC SQL INCLUDE DSN8MCE END-EXEC.
EXEC SQL INCLUDE DSN8MCF END-EXEC.
GOBACK.