         MACRO                                                          00050001
&LABEL   IKJOPER &TYPNAM,&OPERND1=,&OPERND2=,&RSVWD=,&HELP=,           *00100001
               &VALIDCK=,&PROMPT=,&DEFAULT=,&CHAIN=                     00150001
.********************************************************************** 00160001
.* TITLE  -  IKJOPER MACRO (SYMBOLIC DEBUG PROJECT)                     00200001
.*                                                                      00210001
.* FUNCTION  -  THE IKJOPER MACRO IS USED BY COMMAND PROCESSORS TO      00220001
.*              DEFINE TO PARSE THE EXPECTED FORMAT OF AN EXPRESSION    00230001
.*              TYPE PARAMETER.                                         00240001
.*                                                                      00242001
.* INPUT  -  THE PROTOTYPE STATEMENT IS AS DEFINED ABOVE.  IT'S         00244001
.*           PARAMETERS REPRESENT THE FOLLOWING:                        00246001
.*               &LABEL   - STATEMENT LABEL IS REQUIRED                 00248001
.*               &TYPNAM  - A PARAMETER TYPE IS REQUIRED                00248401
.*               &OPERND1 - SPECIFIES THE PCE-LABEL WHICH WILL          00248801
.*                          DESCRIBE THE FIRST OPERAND OF THE           00249201
.*                          EXPRESSION.                                 00249601
.*               &OPERND2 - SPECIFIES THE PCE-LABEL WHICH WILL          00249701
.*                          DESCRIBE THE SECOND OPERAND OF THE          00249801
.*                          EXPRESSION.                                 00249901
.*               &RSVWD   - SPECIFIES THE PCE-LABEL WHICH WILL          00266601
.*                          DESCRIBE POSSIBLE RESERVE WORDS IN          00276601
.*                          THE EXPRESSION.                             00278601
.*               &HELP    - SUPPLIES SECOND-LEVEL MESSAGES.             00280601
.*               &VALIDCK - SPECIFIES THE ADDRESS OF A USER-SUPPLIED    00282601
.*                          VALIDITY CHECK EXIT ROUTINE.                00283001
.*               &PROMPT  - SUPPLIES DATA TO BE USED IF PROMPTING FOR   00283101
.*                          A MISSING PARAMETER.                        00283201
.*               &DEFAULT - SUPPLIES VALUE TO BE USED IF THE PARAMETER  00288801
.*                          IS NOT ENTERED                              00290801
.*               &CHAIN -   ADDRESS OF A TERM ADDRESS-TYPE PCE          00293701
.*                                                                      00294001
.* OUTPUT - THIS MACRO PRODUCES A PARAMETER CONTROL ENTRY (PCE) TO BE   00294101
.*          PASSED TO THE PARSE SERVICE ROUTINE.                        00294201
.*          IF AN ERROR IS ENCOUNTERED IN PROCESSING THE MACRO          00294301
.*          INSTRUCTION ENTERED BY THE CP, AN APPROPRIATE ERROR MESSAGE 00308201
.*          IS PRINTED AND THE PCE IS NOT GENERATED.                    00318201
.*                                                                      00320201
.********************************************************************** 00320601
.*                                                                      00321001
.* THE FOLLOWING CODE DEFINES VARIABLES TO BE USED IN THE MACRO         00321401
.*   EXPANSION.                                                         00321801
.*       GLOBALS   -   IKJCSNM - CSECT NAME FROM IKJPARM MACRO LABEL.   00321901
.*                     IKJDSNM - DSECT NAME FOR PDL                     00322001
.*       LOCALS(ARITHMETIC) -  T - USED AS COUNTER FOR HELP MESSAGES.   00322101
.*                             END - SECOND COUNTER FOR HELP MESSAGES.  00326701
.*                             PDESIZE - AMOUNT OF SPACE FOR PDE        00328701
.*             (BINARY)  -  FLAGS FOR VARIOUS OPTIONS AND TO INDICATE   00330701
.*                          THAT NO PCE IS TO BE GENERATED.             00331101
.*             (CHARACTER)  -  QUOTE- USED WHEN QUOTES ARE MISSING      00331201
.*                                    FROM &TYPNAM.                     00331301
.*                                                                      00331401
         GBLC  &IKJCSNM,&IKJDSNM                                        00331501
         LCLA  &T,&END,&PDESIZE                                         00336101
         LCLB  &FPRPT,&FDFLT,&FHELP,&FVALID,&FENDBIT,&FCHN              00350001
         LCLC  &QUOTE                                                   00400001
&FENDBIT SETB  0                                                        00450001
.*                                                                      00460001
.* DETERMINE IF EXTRANEOUS POSITIONAL PARAMETERS HAVE BEEN SPECIFIED.   00470001
.*                                                                      00480001
         AIF   (N'&SYSLIST LT 2).GOOD                                   00500001
         MNOTE 8,'ONLY ONE POSITIONAL PARAMETER ALLOWED'                00550001
&FENDBIT SETB  1                                                        00552001
.*                                                                      00560001
.* DETERMINE IF TYPE NAME HAS BEEN ENTERED.                             00570001
.*                                                                      00580001
.GOOD    AIF   ('&TYPNAM' EQ '').BAD                                    00600001
         AGO   .GOOD1                                                   00650001
.BAD     MNOTE 8,'PARAMETER TYPE NAME MISSING BUT REQUIRED'             00700001
&FENDBIT SETB  1                                                        00750001
.*                                                                      00760001
.* DETERMINE IF CSECT NAME IS MISSING.                                  00770001
.*                                                                      00780001
.GOOD1   AIF   ('&IKJCSNM' NE '').GOOD2                                 00800001
         MNOTE 8,'CSECT NAME (FROM IKJPARM MACRO LABEL) IS MISSING'     00850001
&FENDBIT SETB  1                                                        00900001
.*                                                                      00910001
.* DETERMINE IF STATEMENT LABEL WAS ENTERED.                            00920001
.*                                                                      00930001
.GOOD2   AIF   ('&LABEL' NE '').GOOD3                                   00950001
         MNOTE 8,'STATEMENT LABEL MISSING BUT REQUIRED'                 01000001
&FENDBIT SETB  1                                                        01050001
.GOOD3   ANOP                                                           01100001
.*                                                                      01150001
.* THE FOLLOWING CODE SETS FLAGS TO INDICATE OPTIONS SPECIFIED ON THE   01200001
.*     MACRO INSTRUCTION.                                               01250001
.*                                                                      01300001
&FPRPT   SETB  ('&PROMPT' NE '')                                        01400001
&FDFLT   SETB  ('&DEFAULT' NE '')                                       01450001
&FHELP   SETB  ('&HELP' NE '')                                          01500001
&FVALID  SETB  ('&VALIDCK' NE '')                                       01550001
&FCHN    SETB  ('&CHAIN' NE '')                                         01560401
.*                                                                      01586001
.* PROMPT AND DEFAULT CANNOT BOTH BE SPECIFIED.                         01596001
.*                                                                      01598001
.OPT6    AIF   (NOT(&FDFLT AND &FPRPT)).OPT2                            01600001
         MNOTE 8,'PARAMETER CANNOT BOTH DEFAULT AND REQUIRE PROMPTING'  01650001
&FENDBIT SETB  1                                                        01700001
.*                                                                      01710001
.* THE FOLLOWING CODE CHECKS THAT OPERND1, OPERND2, AND RSVWD HAVE      01720001
.*     BEEN ENTERED.                                                    01730001
.*                                                                      01740001
.OPT2    AIF   ('&OPERND1' NE '').OPT3                                  01750001
         MNOTE 8,'''OPERND1'' REQUIRED BUT MISSING'                     01800001
&FENDBIT SETB  1                                                        01850001
.OPT3    AIF   ('&OPERND2' NE '').OPT4                                  01900001
         MNOTE 8,'''OPERND2'' REQUIRED BUT MISSING'                     01950001
&FENDBIT SETB  1                                                        02000001
.OPT4    AIF   ('&RSVWD' NE '').OPT5                                    02050001
         MNOTE 8,'''RSVWD'' REQUIRED BUT MISSING'                       02100001
&FENDBIT SETB  1                                                        02150001
.*                                                                      02152001
.* IF AN ERROR HAS BEEN ENCOUNTERED DO NOT GENERATE THE PCE.            02160001
.*                                                                      02170001
.OPT5    AIF   (NOT(&FENDBIT)).GEN                                      02200001
         MEXIT                                                          02250001
.GEN     ANOP                                                           02300001
&IKJCSNM CSECT ,                     RESUME PCL CSECT                   02350001
* FLAGS - BIT3=PROMPT,  BIT4=DEFAULT, BIT6=HELP,                        02400001
*         BIT7=VALIDCK                                                  02450001
DENT&SYSNDX EQU *                                                       02500001
&LABEL   EQU   *                                                        02510001
         DC    BL2'111&FPRPT&FDFLT.0&FHELP&FVALID.00000000' FLAGS       02550001
         DC    AL2(DEND&SYSNDX-DENT&SYSNDX)      LENGTH OF PCE          02600001
         DC    AL2(LAB&SYSNDX-&IKJDSNM)          OFFSET TO PDE          02650001
.*                                                                      02700001
.* THE FOLLOWING CODE SUPPLIES QUOTES TO &TYPNAM IF THEY ARE MISSING    02750001
.*                                                                      02800001
&QUOTE   SETC  '&TYPNAM'(1,1)                                           02850001
         AIF   ('&QUOTE' EQ '''').QUOT                                  02900001
&QUOTE   SETC  ''''                                                     02950001
         DC    AL2(IKJ@&SYSNDX-*),AL2(18),C&QUOTE&TYPNAM&QUOTE   PARAME*03000001
               TER TYPE MESSAGE SEGMENT                                 03050001
         AGO   .EQUGEN1                                                 03100001
.QUOT    ANOP                                                           03150001
         DC    AL2(IKJ@&SYSNDX-*),AL2(18),C&TYPNAM  PARAMETER TYPE MESS*03200001
               AGE SEGMENT                                              03250001
.EQUGEN1 ANOP                                                           03300001
IKJ@&SYSNDX EQU *                                                       03350001
         DC    AL2(&RSVWD-&IKJCSNM)     OFFSET TO RESERVE WORD PCE      03400001
         DC    AL2(&OPERND1-&IKJCSNM)   OFFSET TO FIRST OPERAND PCE     03450001
         DC    AL2(&OPERND2-&IKJCSNM)   OFFSET TO SECOND OPERAND PCE    03500001
         AIF   (&FCHN).DCHERE                                           03510001
         DC    AL2(0)                   NO VAR TERM PCE                 03520001
         AGO   .CONT                                                    03530001
.DCHERE  DC    AL2(&CHAIN-&IKJCSNM)       OFFSET TO VAR TERM PCE        03540001
.CONT    AIF   (&FPRPT).PRPT                                            03550001
         AIF   (NOT &FDFLT).NPRDF                                       03600001
         DC    AL1(IKJ$&SYSNDX-*-2),C&DEFAULT     DEFAULT DATA          03650001
         AGO   .EQUGEN                                                  03700001
.PRPT    DC    AL1(IKJ$&SYSNDX-*-2),C&PROMPT      PROMPT DATA           03750001
.EQUGEN  ANOP                                                           03800001
IKJ$&SYSNDX EQU *                                                       03850001
.NPRDF   ANOP                                                           03860001
         AIF   (NOT &FHELP).NOHELP                                      03900001
         DC    AL2(IKJA&SYSNDX-*)                 LENGTH OF HELP DATA   03950001
&T       SETA  1                                                        04000001
.HELPLP  ANOP                                                           04050001
&T       SETA  &T+1                                                     04100001
         AIF   (&T EQ 256).HELPER                                       04150001
         AIF   (&T LE N'&HELP).HELPLP                                   04200001
         AGO   .HELPCT                                                  04250001
.HELPER  MNOTE 4,'ONLY 255 LEVELS OF HELP AVAILABLE. OTHERS IGNORED'    04300001
.HELPCT  ANOP                                                           04400001
&T       SETA  &T-1                                                     04450001
         DC    AL1(&T)                       NUMBER OF HELP MESSAGES    04500001
&END     SETA  &T                                                       04550001
&T       SETA  1                                                        04600001
.HELPLPA ANOP                                                           04650001
         DC    AL2(IKJ&SYSNDX.&T-*),AL2(00),C&HELP(&T) HELP MSG SEGMENT 04700001
IKJ&SYSNDX.&T EQU *                                                     04750001
&T       SETA  &T+1                                                     04760001
         AIF   (&T LE &END).HELPLPA                                     04770001
IKJA&SYSNDX EQU *                                                       04780001
.NOHELP  AIF   (NOT &FVALID).NOVALID                                    04800001
         DC    AL3(&VALIDCK)         VALIDITY CHECK ROUTINE ADDRESS     04850001
.NOVALID ANOP                                                           04900001
DEND&SYSNDX EQU *                                                       04950001
&IKJDSNM DSECT                                                          05000001
&PDESIZE SETA  2                                                        05150001
LAB&SYSNDX   DS    &PDESIZE.F             ALLOCATE PDE SPACE            05250001
&SYSECT  CSECT ,                      RESUME USERS CSECT                05300001
         MEXIT                                                          05350001
         MEND                                                           05400001
