/***********************************************************@Y30LB39*/ 00010003 /* PROCEDURE NAME - SSCMSG @Y30LB39*/ 00020003 /* @Y30LB39*/ 00030003 /* FUNCTION - THIS ROUTINE PRINTS MESSAGES @Y30LB39*/ 00040003 /* FROM IDCTSSS0 OR IDCTSCM0 AS DICTATED BY THE MSSC @Y30LB39*/ 00050003 /* REASON CODE OR THE ECB POST CODE, EITHER ONE PASSED AS @Y30LB39*/ 00060003 /* INPUT ARGUMENTS. @Y30LB39*/ 00070003 /* @Y30LB39*/ 00090003 /* THE REASON CODE IS PASSED TO THIS ROUTINE FROM THE @Y30LB39*/ 00100003 /* CALLER IN SSRCODE, AND THE ECB POST CODE IS PASSED @Y30LB39*/ 00110003 /* IN SSECBCD. @Y30LB39*/ 00120003 /* @Y30LB39*/ 00130003 /* ONLY ONE MESSAGE IS PRINTED. IF THE REASON CODE @Y30LB39*/ 00140003 /* CONTAINS A NUMBER GREATER THAN ZERO, IT IS USED AS @Y30LB39*/ 00150003 /* THE INDICATION TO CALL UPRINT TO READ IN THE FIRST @Y30LB39*/ 00200003 /* STATIC TEXT ENTRY FROM IDCTSSS0. THAT ENTRY CONTAINS @Y30LB39*/ 00202003 /* AN ARRAY OF THE MESSAGE INDICES USED TO PRINT THE @Y30LB39*/ 00204003 /* MSSC REASON CODE MESSAGE. THE ARRAY IS SCANNED FOR THE @Y30LB39*/ 00206003 /* REASON CODE THAT WAS PASSED AS THE FIRST PARAMETER. @Y30LB39*/ 00208003 /* IF THE ARRAY CONTAINS AN ENTRY WITH THAT VALUE, THE @Y30LB39*/ 00208403 /* ARRAY INDEX IS USED TO PRINT THE MESSAGE. IF THE @Y30LB39*/ 00208803 /* REASON CODE IS NOT FOUND IN THE ARRAY, THE REASON @Y30LB39*/ 00209203 /* CODE IS USED AS BLOCK DATA WHEN PRINTING THE "LAST" @Y30LB39*/ 00209603 /* STATIC TEXT ENTRY IN THE TEXT MODULE. @Y30LB39*/ 00209703 /* @Y30LB39*/ 00210003 /* IF THE REASON CODE FIELD IS ZERO, THE ECB POST CODE @Y30LB39*/ 00220003 /* IS INSERTED AS BLOCK DATA INTO A GENERAL MESSAGE IN @Y30LB39*/ 00230003 /* STATIC TEXT MODULE IDCTSCM0. @Y30LB39*/ 00240003 /* @Y30LB39*/ 00250003 /* INPUT - REASON CODE AS FIRST ARGUMENT, OPTIONALLY THE @Y30LB39*/ 00260003 /* ECB CODE AS THE SECOND ARGUMENT. @Y30LB39*/ 00260103 /* @Y30LB39*/ 00270003 /* OUTPUT - PRINTED MESSAGE AND RETURN CODE OF ZERO. @Y30LB39*/ 00280003 /* @Y30LB39*/ 00290003 /***********************************************************@Y30LB39*/ 00320003 /*@Y30LB39*/ 00330003 SSCMSG: PROCEDURE(SSRCODE, /* SSC RETURN CODE @Y30LB39*/ 00340003 SSECBCD); /* ECB POST CODE @Y30LB39*/ 00350003 /*@Y30LB39*/ 00360003 @EJECT; /*@Y30LB39*/ 00370003 /*@Y30LB39*/ 00372003 /************************************************************/ 00374003 /* @Y30LB39*/ 00376003 /* DECLARATIONS FOR THE SSCMSG PROCEDURE @Y30LB39*/ 00376403 /* @Y30LB39*/ 00378003 /************************************************************/ 00378403 /*@Y30LB39*/ 00378803 /*@Y30LB39*/ 00379203 /************************************************************/ 00379603 /* @Y30LB39*/ 00379703 /* THE NEXT TWO DECLARES ARE FOR THE TWO INPUT @Y30LB39*/ 00379803 /* ARGUMENTS. 1ST - MSSC REASON CODE OR @Y30LB39*/ 00381803 /* 2ND - MSSC POST CODE @Y30LB39*/ 00383803 /* @Y30LB39*/ 00384003 /************************************************************/ 00386003 /*@Y30LB39*/ 00388003 DCL 1 SSRCODE FIXED(31), /*@Y30LB39*/ 00390003 3 * FIXED(15), /*@Y30LB39*/ 00392003 3 SSRHALF FIXED(15); /*1ST ARG REASON CODE @Y30LB39*/ 00394003 DCL SSECBCD PTR(8); /*2ND ARG POST CODE @Y30LB39*/ 00396003 /*@Y30LB39*/ 00398003 /*@Y30LB39*/ 00408003 /************************************************************/ 00408403 /* @Y30LB39*/ 00408803 /* DECLARE THE DYNAMIC AREA NEEDED TO POINT TO AND @Y30LB39*/ 00408903 /* CONTAIN THE "LOCAL" PRINT ARGUMENT LIST @Y30LB39*/ 00409003 /* @Y30LB39*/ 00409203 /************************************************************/ 00409603 /*@Y30LB39*/ 00410003 DCL SSDLPTR PTR(31); /*@Y30LB39*/ 00450003 DCL SSDRGLT CHAR(LENGTH(DARGLIST)); /*@Y30LB39*/ 00462003 /*@Y30LB39*/ 00470003 /************************************************************/ 00505703 /* @Y30LB39*/ 00505803 /* THE NEXT DECLARE IS FOR THE INDEX WHICH IS @Y30LB39*/ 00505903 /* INCREMENTED WHILE SEARCHING THE ARRAY OF @Y30LB39*/ 00506003 /* REASON CODES AND, UPON FINDING THE CORRECT @Y30LB39*/ 00506603 /* REASON CODE, IS PASSED TO PRINT MODULE AS THE @Y30LB39*/ 00507303 /* INDEX OF THE MESSAGE NUMBER TO BE PRINTED. @Y30LB39*/ 00508003 /* @Y30LB39*/ 00508703 /************************************************************/ 00509403 /*@Y30LB39*/ 00510103 DECLARE ENTRYNUM FIXED(8) UNSIGNED; /*@Y30LB39*/ 00510803 /*@Y30LB39*/ 00511903 /************************************************************/ 00512003 /* @Y30LB39*/ 00512103 /* THE NEXT DECLARE IS FOR THE COMMON MESSAGE @Y30LB39*/ 00512503 /* NUMBER TO IDENTIFY THE ECB POST CODE @Y30LB39*/ 00512903 /* MESSAGE CONTAINED IN STATIC TEXT MODULE @Y30LB39*/ 00513003 /* IDCTSCM0. @Y30LB39*/ 00513203 /* @Y30LB39*/ 00513603 /************************************************************/ 00513803 /*@Y30LB39*/ 00514003 DECLARE SSMSGNUM FIXED(8) STATIC LOCAL INIT(56); /*@Y30LB39*/ 00514403 /*@Y30LB39*/ 00515003 /************************************************************/ 00516003 /* @Y30LB39*/ 00517003 /* THE NEXT DECLARE IS FOR THE ARRAY WHICH IS @Y30LB39*/ 00518003 /* SEARCHED FOR THE REASON CODE CORRESPONDING @Y30LB39*/ 00519003 /* TO THE MESSAGE INDEX AND ULTIMATELY, THE @Y30LB39*/ 00520003 /* MESSAGE TEXT TO BE PRINTED TO THE USER TELLING @Y30LB39*/ 00521003 /* HIM OF THE EXACT REASON FOR THE MSSC FAILURE. @Y30LB39*/ 00522003 /* @Y30LB39*/ 00523003 /************************************************************/ 00524003 /*@Y30LB39*/ 00525003 DECLARE 1 SSINXLST BDY(WORD), /*@Y30LB39*/ 00526003 3 SSARRAY (60) FIXED(15); /*@Y30LB39*/ 00527003 /*@Y30LB39*/ 00528003 /************************************************************/ 00529003 /* @Y30LB39*/ 00530003 /* THE NEXT DECLARATION IS FOR THE MESSAGE ID @Y30LB39*/ 00532003 /* USED BY THE STATIC TEXT MODULE - IDCTSSS0. @Y30LB39*/ 00534003 /* @Y30LB39*/ 00540003 /************************************************************/ 00542003 /*@Y30LB39*/ 00544003 DECLARE SSMODSS0 CHAR(3) STATIC INIT('SS0'); /*@Y30LB39*/ 00546003 /*@Y30LB39*/ 00550003 /************************************************************/ 00550803 /* @Y30LB39*/ 00551203 /* THE NEXT DECLARATION IS FOR THE MESSAGE ID @Y30LB39*/ 00551603 /* USED BY THE STATIC TEXT MODULE - IDCTSCMO. @Y30LB39*/ 00551703 /* @Y30LB39*/ 00551803 /************************************************************/ 00551903 /*@Y30LB39*/ 00553503 DECLARE SSMODCM0 CHAR(3) STATIC INIT('CM0'); /*@Y30LB39*/ 00555503 /*@Y30LB39*/ 00555603 @EJECT; /*@Y30LB39*/ 00810403 /*@Y30LB39*/ 00812003 /************************************************************/ 00814003 /* ISSUE UTRACE MACRO TO PROVIDE A TRACK OF FLOW @Y30LB39*/ 00816003 /* ON CONTROL WITHIN THE SSMSG MODULE. @Y30LB39*/ 00818003 /* THIS WILL PLACE THE IDENTIFIER SPECIFIED IN @Y30LB39*/ 00818403 /* A SEPARATE INTRA-MODULE TRACE TABLE. @Y30LB39*/ 00818803 /* @Y30LB39*/ 00819203 /************************************************************/ 00819603 /*@Y30LB39*/ 00819703 UTRACE = 'SSAA'; /*@Y30LB39*/ 00830003 /*@Y30LB39*/ 00852003 /************************************************************/ 00854003 /* @Y30LB39*/ 00856003 /* ESTABLISH ADDRESSABILITY TO THE DYNAMIC @Y30LB39*/ 00856403 /* ARGUMENT LIST. @Y30LB39*/ 00856803 /* @Y30LB39*/ 00858003 /************************************************************/ 00858403 /*@Y30LB39*/ 00858803 SSDLPTR = ADDR(SSDRGLT); /*@Y30LB39*/ 00859203 /*@Y30LB39*/ 00861203 /************************************************************/ 00865103 /* @Y30LB39*/ 00866003 /* IF THE REASON CODE IS NOT ZERO, READ IN THE @Y30LB39*/ 00866503 /* ARRAY FROM THE STATIC TEXT MODULE - IDCTSSS0. @Y30LB39*/ 00867203 /* @Y30LB39*/ 00868003 /************************************************************/ 00868403 /*@Y30LB39*/ 00868803 IF SSRCODE > 0 THEN 00900003 DO; /*@Y30LB39*/ 00950003 /*@Y30LB39*/ 01000003 /********************************************************/ 01050003 /* @Y30LB39*/ 01060003 /* CLEAR THE DYNAMIC ARGUMENT LIST AND @Y30LB39*/ 01062003 /* INITIALIZE THE PRINT ARGUMENT LIST TO READ @Y30LB39*/ 01064003 /* IN THE ARRAY WHICH CONTAINS THE MSSC REASON @Y30LB39*/ 01066003 /* CODES. @Y30LB39*/ 01068003 /* @Y30LB39*/ 01070003 /********************************************************/ 01080003 /*@Y30LB39*/ 01082003 SSDRGLT = NULLAREA; /*@Y30LB39*/ 01084003 SSDLPTR -> DARGRETP = ADDR(SSINXLST); /*@Y30LB39*/ 01086003 SSDLPTR -> DARGSMOD = SSMODSS0; /*@Y30LB39*/ 01088003 SSDLPTR -> DARGSENT = 1; /*@Y30LB39*/ 01088403 SSDLPTR -> DARGRETL = LENGTH(SSINXLST); /*@Y30LB39*/ 01088803 /*@Y30LB39*/ 01089203 /********************************************************/ 01089603 /* @Y30LB39*/ 01089703 /* ISSUE UPRINT MACRO TO READ IN THE SEARCH @Y30LB39*/ 01089803 /* ARRAY. @Y30LB39*/ 01092603 /* @Y30LB39*/ 01096003 /********************************************************/ 01098803 /*@Y30LB39*/ 01101603 UPRINT (GDTTBL,PRTFILE,SSDLPTR); /*@Y30LB39*/ 01103603 /*@Y30LB39*/ 01104003 /********************************************************/ 01104103 /* @Y30LB39*/ 01104203 /* BEGIN DO LOOP TO SEARCH FOR THE MESSAGE @Y30LB39*/ 01104303 /* INDEX CORRESPONDING TO THE REASON CODE @Y30LB39*/ 01105203 /* PASSED AS THE FIRST ARGUMENT. @Y30LB39*/ 01105603 /* THE DO LOOP BEGINS WITH THE SECOND ARRAY @Y30LB39*/ 01106003 /* ENTRY SINCE THE FIRST IS REQUIRED BY THE @Y30LB39*/ 01106403 /* SEARCH ARRAY ITSELF. @Y30LB39*/ 01107303 /* THE SEARCH CONTINUES UNTIL THE REASON CODE @Y30LB39*/ 01110003 /* IS FOUND, AT WHICH TIME THE SEARCH INDEX @Y30LB39*/ 01110503 /* IS PASSED TO THE PRINT MODULE TO PRINT @Y30LB39*/ 01111003 /* THE MESSAGE ASSOCIATED WITH THAT PARTICULAR @Y30LB39*/ 01111503 /* REASON CODE. @Y30LB39*/ 01112003 /* IF THERE IS NO MATCH FOUND IN THE ARRAY, @Y30LB39*/ 01112503 /* THEN THE INDEX WILL BE THE LAST POSITION IN @Y30LB39*/ 01113003 /* ARRAY. THIS WILL BE THE INDICATION THAT @Y30LB39*/ 01113503 /* THE REASON CODE ITSELF SHOULD BE PRINTED. @Y30LB39*/ 01114003 /* @Y30LB39*/ 01114503 /********************************************************/ 01115003 /*@Y30LB39*/ 01115503 ENTRYNUM = 1; /*@Y30LB39*/ 01116003 DO UNTIL (SSRHALF=SSARRAY(ENTRYNUM)|SSARRAY(ENTRYNUM)=0); 01116503 ENTRYNUM = ENTRYNUM + 1; /*@Y30LB39*/ 01117003 END; /*@Y30LB39*/ 01117503 /*@Y30LB39*/ 01118003 /********************************************************/ 01118503 /* @Y30LB39*/ 01119003 /* THE CORRECT INDEX HAS BEEN FOUND @Y30LB39*/ 01119503 /* @Y30LB39*/ 01120003 /* CLEAR THE DYNAMIC ARGUMENT LIST AND FILL @Y30LB39*/ 01120203 /* OUT THE PRINT ARGUMENT FIELDS WITH EITHER: @Y30LB39*/ 01122203 /* 1) THE INDEX CORRESPONDING TO THE REASON @Y30LB39*/ 01122603 /* CODE OR @Y30LB39*/ 01123003 /* 2) THE LAST INDEX AND THE REASON CODE @Y30LB39*/ 01123103 /* ITSELF AS A STATIC TEXT INSERT. @Y30LB39*/ 01123203 /* @Y30LB39*/ 01123603 /********************************************************/ 01125303 /*@Y30LB39*/ 01127403 SSDRGLT = NULLAREA; /*@Y30LB39*/ 01129403 SSDLPTR -> DARGSMOD = SSMODSS0; /*@Y30LB39*/ 01129603 SSDLPTR -> DARGSENT = ENTRYNUM; /*@Y30LB39*/ 01129703 IF SSARRAY(ENTRYNUM) = 0 THEN /*@Y30LB39*/ 01129903 DO; /*@Y30LB39*/ 01130003 SSDLPTR -> DARGDBP = ADDR(SSRCODE); /*@Y30LB39*/ 01132403 SSDLPTR -> DARGILP = LENGTH(SSRCODE); /*@Y30LB39*/ 01134403 END; /*@Y30LB39*/ 01134803 END; /*@Y30LB39*/ 01139903 @EJECT; /*@Y30LB39*/ 01141903 /*@Y30LB39*/ 01142003 /************************************************************/ 01142403 /* @Y30LB39*/ 01145103 /* THE FIRST ARGUMENT WAS ZERO, INDICATING THAT @Y30LB39*/ 01145503 /* THIS ROUTINE IS TO PRINT OUT THE ECB POST @Y30LB39*/ 01145903 /* CODE. THEREFORE, CLEAR THE DYNAMIC ARGUMENT @Y30LB39*/ 01146303 /* LIST AND FILL OUT THE PRINT ARGUMENT FIELDS @Y30LB39*/ 01146703 /* SO THE STATIC TEXT MODULE, IDCTSCM0, WILL @Y30LB39*/ 01146803 /* PRINT OUT THE MESSAGE ASSOCIATED WITH THE @Y30LB39*/ 01146903 /* POST CODE. @Y30LB39*/ 01147003 /* @Y30LB39*/ 01148403 /************************************************************/ 01148603 /*@Y30LB39*/ 01148803 ELSE /*@Y30LB39*/ 01149003 DO; /*@Y30LB39*/ 01149203 SSDRGLT = NULLAREA; /*@Y30LB39*/ 01149403 SSDLPTR -> DARGSMOD = SSMODCM0; /*@Y30LB39*/ 01149803 SSDLPTR -> DARGSENT = SSMSGNUM; /*@Y30LB39*/ 01149903 SSDLPTR -> DARGDBP = ADDR(SSECBCD); /*@Y30LB39*/ 01150003 SSDLPTR -> DARGILP = LENGTH(SSECBCD); /*@Y30LB39*/ 01150103 END; /*@Y30LB39*/ 01152803 /*@Y30LB39*/ 01154503 /************************************************************/ 01154603 /* @Y30LB39*/ 01154903 /* ISSUE UPRINT MACRO TO PRINT THE REASON @Y30LB39*/ 01155203 /* CODE MESSAGE OR THE ECB POST CODE MESSAGE. @Y30LB39*/ 01155503 /* @Y30LB39*/ 01155803 /************************************************************/ 01156103 /*@Y30LB39*/ 01156403 UPRINT (GDTTBL,PRTFILE,SSDLPTR); /*@Y30LB39*/ 01156703 /*@Y30LB39*/ 01158203 /************************************************************/ 01158503 /* @Y30LB39*/ 01158803 /* RETURN TO CALLER WITH A RETURN CODE OF ZERO @Y30LB39*/ 01159103 /* @Y30LB39*/ 01159403 /************************************************************/ 01159703 /*@Y30LB39*/ 01160003 /*@Y30LB39*/ 01170003 RETURN CODE(0); /*@Y30LB39*/ 01180003 /*@Y30LB39*/ 01190003 END SSCMSG; /*@Y30LB39*/ 01200003