星期三, 11月 01, 2023

2002-05-08 工具 : GRPJOBMNU (Transfer Group Job Menu) 一個能提升工作效率的工具


工具 : GRPJOBMNU (Transfer Group Job Menu) 一個能提升工作效率的工具

An interactive job is not a group job. You can run only one job in the session.
To run additional jobs, you must start other sessions. You can use the system 
request key to get an alternate sign-on screen, but that limits you to two jobs.

With PC Support and Client Access, , you can use the hot key. You can run multiple
emulation sessions in separate windows, however, require you to sign on to the system again.

Group jobs allow you to run up to 16 distinct interactive jobs in one 
session; you sign on only once.

Only one group job is active at a time. The rest are suspended. The Transfer to Group
Job (TFRGRPJOB) command allows you to switch from one group job to another and to add 
new jobs to the group.

To change a nongroup job into a group job, use the Change Group Attributes
(CHGGRPA) command.

 CHGGRPA GRPJOB(JOB1) +
   TEXT('Group job 1')

The current interactive job is now a group job called JOB1.

Use attention key program runs the TFRGRPJOB command to return the user to the first
group job (JOB1), when the Attn key is pressed. All group jobs share a dataarea
*GDA for share information bewteen all group jobs.

Imaging you are keying a transaction. The boss interrupts you with a request for
information. You press the Attn key and select the group job that runs the inquiry
program. After looking up the information and answering the request, you press the
Attn key again, select the data entry job, and continue where you left off.

And image what are you doing with the same condition under none group job function support. 
Then you will select the GROUP JOB function.

This GRPJOBMNU(Transfer Group Job and Command Key) utility include following Source:

GRPJOBDFTC : Create Default Dataarea in library QUSRTEMP.

GRPJOBMNUD : The utility Display file, it must be created with RSTDSP(*YES).

GRPJOBTFRC : Transfer Group job initial program.

GRPJOBMNUC : The utility main driver.

How to install and use the utility:
1. CRTCLPGM GRPJOBDFT
2. CRTDSPF FILE(GRPJOBMNU) RSTDSP(*YES)
3. CRTCLPGM GRPJOBTFRC
4. CRTCLPGM GRPJOBMNUC
5. CALL GRPJOBDFTC -- create default Dataarea in QUSRTEMP
6. Move Program GRPJOBTFRC, GRPJOBMNUC
        Display File GRPJOBMNUD to QGPL
7. ADD SETATNPGM(GRPJOBMNUC) to user's initial program. 
8. SIGNON again.
9. After SignON, press ATTN key. You will get it.

You can use

F01, F03, F12 exit menu

F2 choose another bottom key screen

F5 refresh

F6 for Job description, Job command, exit Menu when return from another group job modification.

F7 for command key definition

F8,F9 for retrieve previous or next command

F11 switch border color

===============================================================================================

/**     GRPJOBMNU -- Group Job Utility                    **/
/**     Author: Vengoal Chang                             **/
/**     2002/04/08                                        **/
/**     GRPJOBDFTC : Create Default Dataarea in QUSRTEMP  **/
GRPJOBDFTC: +
     PGM
             DCL        VAR(&USER) TYPE(*CHAR) LEN(10)
             CHGVAR     &USER 'GRPJOBDFT'
             CRTDTAARA  DTAARA(QUSRTEMP/GRPJOBDFT) TYPE(*CHAR) +
                          LEN(1200) TEXT('Group Job Default +
                          DataArea for Job & Comand')
             MONMSG CPF0000

CMDKEY:
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (1 25)) VALUE('WRKSPLF')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (26 25)) +
                          VALUE('?WRKJOBQ QBATCH')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (51 25)) +
                          VALUE('WRKACTJOB SBS(QBATCH)')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (76 25)) +
                          VALUE('WRKACTJOB SBS(*ALL)')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (101 25)) +
                          VALUE('WRKSBMJOB')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (126 25)) VALUE('WRKMSG')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (151 25)) VALUE('WRKJOB')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (176 25)) VALUE(' ')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (201 25)) VALUE('CALL +
                          QUSCMDLN')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (226 25)) VALUE('CALL +
                          QEZSNDMG')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (251 25)) VALUE(' ')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (276 25)) +
                          VALUE('SIGNOFF')
JOB:
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (301 20)) VALUE('Group +
                          Job 1')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (321 30)) VALUE('CALL +
                          QCMD')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (902 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (351 20)) VALUE('Group +
                          Job 2')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (371 30)) VALUE('CALL +
                          QCMD')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (903 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (401 20)) VALUE('Group +
                          Job 3')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (421 30)) VALUE('CALL +
                          QCMD')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (904 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (451 20)) VALUE('Group +
                          Job 4')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (471 30)) VALUE('CALL +
                          QCMD')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (905 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (501 20)) VALUE('Group +
                          Job 5')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (521 30)) VALUE('CALL +
                          QCMD')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (906 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (551 20)) VALUE('Group +
                          Job 6')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (571 30)) VALUE('CALL +
                          QCMD')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (907 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (601 20)) VALUE('Group +
                          Job 7')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (521 30)) VALUE('CALL +
                          QCMD')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (908 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (651 20)) VALUE('Group +
                          Job 8')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (671 30)) VALUE('CALL +
                          QCMD')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (909 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (701 20)) VALUE('Work +
                          Query(s)')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (721 30)) VALUE('WRKQRY')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (910 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (751 20)) VALUE('Query +
                          Manager')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (771 30)) VALUE('STRQM')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (911 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (801 20)) VALUE(SQL)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (821 30)) VALUE('STRSQL')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (912 1)) VALUE('Y')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (851 20)) VALUE('STRPDM')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (871 30)) VALUE('STRPDM')
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (913 1)) VALUE('Y')
COLOR:
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (901 1)) VALUE('1')
             RETURN
             ENDPGM

========================================

      *     GRPJOBMNU -- Group Job Utility   
      *     Author: Vengoal Chang            
      *     2002/04/08                       
      *     GRPJOBMNUD -- TRANSFER GROUP JOB AND COMMAND WINDOW
      *     COMPILED WTIH  RSTDSP(*YES)
      *
     A                                      DSPSIZ(24 80 *DS3)
     A                                      CA03(03 'EXIT')
     A                                      CA01(01 'EXIT')
     A                                      CA02(02 'ALT')
     A                                      CF04(04 'PROMPT')
     A                                      CA05(05 'REFRESH')
     A                                      CF06(06 'JOBS')
     A                                      CF07(07 'FKEYS')
     A                                      CF08(08 'PREV')
     A                                      CF09(09 'NEXT')
     A                                      CA10(10 'ABOUT')
     A                                      CA11(11 'COLOR')
     A                                      CA12(12 'CANCEL')
     A
     A          R OPTIONS                   WINDOW(2 9 17 60 *NOMSGLIN)
     A*         R OPTIONS                   WINDOW(2 9 18 60)
     A  81                                  WDWBORDER((*COLOR BLU) +
     A                                                (*DSPATR RI) +
     A                                                (*CHAR '        '))
     A  82                                  WDWBORDER((*COLOR GRN) +
     A                                                (*DSPATR RI) +
     A                                                (*CHAR '        '))
     A  83                                  WDWBORDER((*COLOR WHT) +
     A                                                (*DSPATR RI) +
     A                                                (*CHAR '        '))
     A  84                                  WDWBORDER((*COLOR RED) +
     A                                                (*DSPATR RI) +
     A                                                (*CHAR '        '))
     A  85                                  WDWBORDER((*COLOR TRQ) +
     A                                                (*DSPATR RI) +
     A                                                (*CHAR '        '))
     A  86                                  WDWBORDER((*COLOR YLW) +
     A                                                (*DSPATR RI) +
     A                                                (*CHAR '        '))
     A  87                                  WDWBORDER((*COLOR PNK) +
     A                                                (*DSPATR RI) +
     A                                                (*CHAR '        '))
     A                                      OVERLAY
     A                                      CF13(13)
     A                                      CF14(14)
     A                                      CF15(15)
     A                                      CF16(16)
     A                                      CF17(17)
     A                                      CF18(18)
     A                                      CF19(19)
     A                                      CF20(20)
     A                                      CF21(21)
     A                                      CF22(22)
     A                                      CF23(23)
     A                                      CF24(24)
     A                                  1  1USER
     A                                  1 12'Transfer to Group Job/Co-
     A                                      mmand Key Window'
     A                                      DSPATR(RI)
     A                                  1 53SYSNAME
     A                                      COLOR(BLU)
     A  91                             17  1'F1/F3=Exit F2=Alt-Keys F4=Prompt -
     A                                      F5=Rsfresh F6=Jobs F7=FKeys'
     A                                      DSPATR(RI)
     A N91                             17  1'F2=Alt F8=Rtv-Prev F9=Rtv-Nxt -
     A                                      F10=About F11=Color F12=Cancel'
     A                                      DSPATR(RI)
      * BORDER END
     A                                  2  1' 1)'
     A  31                                  COLOR(RED) DSPATR(BL)
     A  61                                  COLOR(PNK)
     A                                  3  1' 2)'
     A  32                                  COLOR(RED) DSPATR(BL)
     A  62                                  COLOR(PNK)
     A                                  4  1' 3)'
     A  33                                  COLOR(RED) DSPATR(BL)
     A  63                                  COLOR(PNK)
     A                                  5  1' 4)'
     A  34                                  COLOR(RED) DSPATR(BL)
     A  64                                  COLOR(PNK)
     A                                  6  1' 5)'
     A  35                                  COLOR(RED) DSPATR(BL)
     A  65                                  COLOR(PNK)
     A                                  7  1' 6)'
     A  36                                  COLOR(RED) DSPATR(BL)
     A  66                                  COLOR(PNK)
     A                                  8  1' 7)'
     A  37                                  COLOR(RED) DSPATR(BL)
     A  67                                  COLOR(PNK)
     A                                  9  1' 8)'
     A  38                                  COLOR(RED) DSPATR(BL)
     A  68                                  COLOR(PNK)
     A                                 10  1' 9)'
     A  39                                  COLOR(RED) DSPATR(BL)
     A  69                                  COLOR(PNK)
     A                                 11  1'10)'
     A  40                                  COLOR(RED) DSPATR(BL)
     A  70                                  COLOR(PNK)
     A                                 12  1'11)'
     A  41                                  COLOR(RED) DSPATR(BL)
     A  71                                  COLOR(PNK)
     A                                 13  1'12)'
     A  42                                  COLOR(RED) DSPATR(BL)
     A  72                                  COLOR(PNK)
     A                                 14  1'Selection or command:'
     A                                 14 53TIME COLOR(GRN) DSPATR(RI)
     A                                 15  1' ===>'
     A            CMDLINE       51   B 15  7
     A            MSGLINE       56   O 16  2DSPATR(HI)
      *
     A            JOB1          20   B  2  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB1CMD       30   B  2 26COLOR(TRQ)
     A N30        RTRN01         1   B  2 57COLOR(TRQ)
     A  30                              2 28'F13='
     A                                      COLOR(BLU)
     A  30        CMD13         25   B  2 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB2          20   B  3  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB2CMD       30   B  3 26COLOR(TRQ)
     A N30        RTRN02         1   B  3 57COLOR(TRQ)
     A  30                              3 28'F14='
     A                                      COLOR(BLU)
     A  30        CMD14         25   B  3 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB3          20   B  4  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB3CMD       30   B  4 26COLOR(TRQ)
     A N30        RTRN03         1   B  4 57COLOR(TRQ)
     A  30                              4 28'F15='
     A                                      COLOR(BLU)
     A  30        CMD15         25   B  4 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB4          20   B  5  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB4CMD       30   B  5 26COLOR(TRQ)
     A N30        RTRN04         1   B  5 57COLOR(TRQ)
     A  30                              5 28'F16='
     A                                      COLOR(BLU)
     A  30        CMD16         25   B  5 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB5          20   B  6  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB5CMD       30   B  6 26COLOR(TRQ)
     A N30        RTRN05         1   B  6 57COLOR(TRQ)
     A  30                              6 28'F17='
     A                                      COLOR(BLU)
     A  30        CMD17         25   B  6 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB6          20   B  7  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB6CMD       30   B  7 26COLOR(TRQ)
     A N30        RTRN06         1   B  7 57COLOR(TRQ)
     A  30                              7 28'F18='
     A                                      COLOR(BLU)
     A  30        CMD18         25   B  7 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB7          20   B  8  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB7CMD       30   B  8 26COLOR(TRQ)
     A N30        RTRN07         1   B  8 57COLOR(TRQ)
     A  30                              8 28'F19='
     A                                      COLOR(BLU)
     A  30        CMD19         25   B  8 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB8          20   B  9  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB8CMD       30   B  9 26COLOR(TRQ)
     A N30        RTRN08         1   B  9 57COLOR(TRQ)
     A  30                              9 28'F20='
     A                                      COLOR(BLU)
     A  30        CMD20         25   B  9 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB9          20   B 10  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB9CMD       30   B 10 26COLOR(TRQ)
     A N30        RTRN09         1   B 10 57COLOR(TRQ)
     A  30                             10 28'F21='
     A                                      COLOR(BLU)
     A  30        CMD21         25   B 10 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB10         20   B 11  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB10CMD      30   B 11 26COLOR(TRQ)
     A N30        RTRN10         1   B 11 57COLOR(TRQ)
     A  30                             11 28'F22='
     A                                      COLOR(BLU)
     A  30        CMD22         25   B 11 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB11         20   B 12  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB11CMD      30   B 12 26COLOR(TRQ)
     A N30        RTRN11         1   B 12 57COLOR(TRQ)
     A  30                             12 28'F23='
     A                                      COLOR(BLU)
     A  30        CMD23         25   B 12 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
      *
     A            JOB12         20   B 13  5CHGINPDFT
     A  30                                  COLOR(WHT)
     A N30                                  DSPATR(UL) COLOR(TRQ)
     A  30 80
     AO 30N80                               DSPATR(PR)
     A N30        JOB12CMD      30   B 13 26COLOR(TRQ)
     A N30        RTRN12         1   B 13 57COLOR(TRQ)
     A                                 13 28'F24='
     A                                      COLOR(BLU)
     A            CMD24         25   B 13 33
     A     80                               DSPATR(PR) COLOR(YLW)
     A    N80                               COLOR(TRQ)
     A*
     A
     A          R DUMMY
     A*                                     KEEP
     A                                      ASSUME
     A                                  1  3' '
=======================================

/**     GRPJOBMNU -- Group Job Utility      **/
/**     Author: Vengoal Chang               **/
/**     2002/04/08                          **/
/**     GRPJOBTFRC : TFRGRPJOB initial PGM  **/

GRPTFRTFRC: +
     PGM
     DCL VAR(&JOB) TYPE(*CHAR) LEN(1)
     DCL VAR(&USER) TYPE(*CHAR) LEN(10)
     DCL VAR(&PGM) TYPE(*CHAR) LEN(10)
     DCL VAR(&PGMLIB) TYPE(*CHAR) LEN(10)
     DCL VAR(&GRPJOB) TYPE(*CHAR) LEN(10)
     DCL VAR(&GRPJOBCMD) TYPE(*CHAR) LEN(30)
     DCL VAR(&CMDLEN) TYPE(*CHAR) LEN(2) VALUE('30')
     DCL VAR(&MSGTXT) TYPE(*CHAR) LEN(100)
     DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(100)
     DCL VAR(&MSGKEY) TYPE(*CHAR) LEN(4)
     DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
     DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
     DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
     DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
INIT:
     SETATNPGM  PGM(GRPJOBMNUC)
     RTVJOBA USER(&USER)
     RTVGRPA GRPJOB(&GRPJOB)
     CHKOBJ OBJ(QUSRTEMP/&USER) OBJTYPE(*DTAARA)
     MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(CALLPGM))
CHKJOBID:
     IF COND(&GRPJOB *EQ 'JOB1') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (321 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB2') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (371 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB3') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (421 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB4') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (471 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB5') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (521 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB6') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (571 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB7') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (621 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB8') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (671 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB9') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USER-
 (721 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB10') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USE-
R (771 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB11') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USE-
R (821 30)) RTNVAR(&GRPJOBCMD))
     IF COND(&GRPJOB *EQ 'JOB12') THEN(RTVDTAARA DTAARA(QUSRTEMP/&USE-
R (871 30)) RTNVAR(&GRPJOBCMD))

CALLPGM:
     IF COND(&GRPJOBCMD *EQ '*NONE') THEN(DO)
     ENDGRPJOB
     GOTO CMDLBL(EOJ)
     ENDDO
     IF COND(&GRPJOBCMD *EQ ' ') THEN(CALL PGM(QSYS/QCMD))
     ELSE CMD(DO)
     CALL PGM(QCMDCHK) PARM(&GRPJOBCMD 30)
     MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(STDERR))
     CALL PGM(QCMDEXC) PARM(&GRPJOBCMD 30)
     MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(STDERR))
     ENDDO
     GOTO EOJ

STDERR: +
     RCVMSG MSGTYPE(*LAST) MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) -
SNDMSGFLIB(&MSGFLIB)
     IF COND(&MSGID *EQ '       ') THEN(GOTO CMDLBL(EOJ))
     SNDUSRMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) MSGDTA(&MSGDTA) -
MSGTYPE(*INFO)
     GOTO CMDLBL(STDERR)
     GOTO CMDLBL(EOJ)
EOJ: +
     RETURN
     ENDPGM
=======================================

/**     GRPJOBMNU -- Group Job Utility   **/
/**     Author: Vengoal Chang            **/
/**     2002/04/08                       **/
/**     GRPJOBMNUC : Attention Program   **/
GRPJOBMNUC: +
     PGM
     DCL VAR(&JOB)       TYPE(*CHAR) LEN(1)
     DCL VAR(&USER)      TYPE(*CHAR) LEN(10)
     DCL VAR(&PGM)       TYPE(*CHAR) LEN(10)
     DCL VAR(&PGMLIB)    TYPE(*CHAR) LEN(10)
     DCL VAR(&GRPJOB)    TYPE(*CHAR) LEN(10)
     DCL VAR(&GRPJOBN)   TYPE(*CHAR) LEN(10)
     DCL VAR(&GRPJOBL)   TYPE(*CHAR) LEN(1056)
     DCL VAR(&JOBLST)    TYPE(*DEC) LEN(4 0)
     DCL VAR(&GRPJOBCNT) TYPE(*DEC) LEN(3 0)
     DCL VAR(&GRPJOBCMD) TYPE(*CHAR) LEN(30)
     DCL VAR(&CMDLEN)    TYPE(*CHAR) LEN(2) VALUE('30')
     DCL VAR(&MSGTXT)    TYPE(*CHAR) LEN(100)
     DCL VAR(&MSGDTA)    TYPE(*CHAR) LEN(100)
     DCL VAR(&MSGKEY)    TYPE(*CHAR) LEN(4)
     DCL VAR(&MSGID)     TYPE(*CHAR) LEN(7)
     DCL VAR(&MSGF)      TYPE(*CHAR) LEN(10)
     DCL VAR(&MSGFLIB)   TYPE(*CHAR) LEN(10)
     DCL VAR(&MSGQ)      TYPE(*CHAR) LEN(10)
     DCL VAR(&USRTXT)    TYPE(*CHAR) LEN(50)
     DCL VAR(&CMDKEY)    TYPE(*CHAR) LEN(25)
     DCL VAR(&COLOR)     TYPE(*CHAR) LEN(1)
     DCL VAR(&COLORD)    TYPE(*DEC) LEN(1 0)
     DCL VAR(&EXTMNU)    TYPE(*CHAR) LEN(1) VALUE('Y')
     dcl  &CmdString     *char 2000     /* Command string */
     dcl  &CmdMsgKey     *char 4        /* Command message key */

        /* API parameters */
     dcl  &APIdata       *char 2000     /* Retrieved API data */
     dcl  &APIMsgType    *char 10       /* Request message type */
     dcl  &APIoptions    *char 20       /* Format CPOP0100 options */
     dcl  &APIlength     *char 4        /* Data length returned */

        /* Other variables */

     dcl  &MsgKey        *char 4        /* Message key */
     dcl  &Length        *dec (9 0)     /* Data length */

     DCLF GRPJOBMNUD
INIT:

             RTVJOBA    USER(&USER)
             RTVUSRPRF  RTNUSRPRF(&USER) MSGQ(&MSGQ) TEXT(&USRTXT)

             CHKOBJ     OBJ(QUSRTEMP/&USER) OBJTYPE(*DTAARA)
             MONMSG     MSGID(CPF9801) EXEC(DO)
             CRTDUPOBJ  OBJ(GRPJOBDFT) FROMLIB(QUSRTEMP) +
                          OBJTYPE(*DTAARA) NEWOBJ(&USER)
             ENDDO

             RTVDTAARA  DTAARA(QUSRTEMP/&USER (301 20)) +
                          RTNVAR(&JOB1)

             RTVGRPA    GRPJOB(&GRPJOB)
             IF (&GRPJOB = '*NONE') DO
                CHGGRPA    GRPJOB(JOB1) MSGQ(&MSGQ) TEXT(&JOB1)
                MONMSG     MSGID(CPF1305)
                RTVGRPA    GRPJOB(&GRPJOB)
                CHGDTAARA  DTAARA(*GDA (121 12)) VALUE('100000000000')
             ENDDO

             RTVDTAARA  DTAARA(QUSRTEMP/&USER (321 30)) +
                          RTNVAR(&JOB1CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (902 1)) +
                          RTNVAR(&RTRN01)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (351 20)) +
                          RTNVAR(&JOB2)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (371 30)) +
                          RTNVAR(&JOB2CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (903 1)) +
                          RTNVAR(&RTRN02)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (401 20)) +
                          RTNVAR(&JOB3)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (421 30)) +
                          RTNVAR(&JOB3CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (904 1)) +
                          RTNVAR(&RTRN03)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (451 20)) +
                          RTNVAR(&JOB4)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (471 30)) +
                          RTNVAR(&JOB4CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (905 1)) +
                          RTNVAR(&RTRN04)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (501 20)) +
                          RTNVAR(&JOB5)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (521 30)) +
                          RTNVAR(&JOB5CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (906 1)) +
                          RTNVAR(&RTRN05)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (551 20)) +
                          RTNVAR(&JOB6)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (571 30)) +
                          RTNVAR(&JOB6CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (907 1)) +
                          RTNVAR(&RTRN06)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (601 20)) +
                          RTNVAR(&JOB7)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (521 30)) +
                          RTNVAR(&JOB7CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (908 1)) +
                          RTNVAR(&RTRN07)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (651 20)) +
                          RTNVAR(&JOB8)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (671 30)) +
                          RTNVAR(&JOB8CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (909 1)) +
                          RTNVAR(&RTRN08)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (701 20)) +
                          RTNVAR(&JOB9)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (721 30)) +
                          RTNVAR(&JOB9CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (910 1)) +
                          RTNVAR(&RTRN09)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (751 20)) +
                          RTNVAR(&JOB10)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (771 30)) +
                          RTNVAR(&JOB10CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (911 1)) +
                          RTNVAR(&RTRN10)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (801 20)) +
                          RTNVAR(&JOB11)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (821 30)) +
                          RTNVAR(&JOB11CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (912 1)) +
                          RTNVAR(&RTRN11)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (851 20)) +
                          RTNVAR(&JOB12)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (871 30)) +
                          RTNVAR(&JOB12CMD)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (913 1)) +
                          RTNVAR(&RTRN12)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (1  25)) RTNVAR(&CMD13)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (26 25)) RTNVAR(&CMD14)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (51 25)) RTNVAR(&CMD15)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (76 25)) RTNVAR(&CMD16)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (101 25)) RTNVAR(&CMD17)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (126 25)) RTNVAR(&CMD18)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (151 25)) RTNVAR(&CMD19)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (176 25)) RTNVAR(&CMD20)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (201 25)) RTNVAR(&CMD21)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (226 25)) RTNVAR(&CMD22)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (251 25)) RTNVAR(&CMD23)
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (276 25)) RTNVAR(&CMD24)

     /* SET CURRENT GRPJOB DSPATR */
     IF (&GRPJOB = 'JOB1') CHGVAR &IN31 '1'
     IF (&GRPJOB = 'JOB2') CHGVAR &IN32 '1'
     IF (&GRPJOB = 'JOB3') CHGVAR &IN33 '1'
     IF (&GRPJOB = 'JOB4') CHGVAR &IN34 '1'
     IF (&GRPJOB = 'JOB5') CHGVAR &IN35 '1'
     IF (&GRPJOB = 'JOB6') CHGVAR &IN36 '1'
     IF (&GRPJOB = 'JOB7') CHGVAR &IN37 '1'
     IF (&GRPJOB = 'JOB8') CHGVAR &IN38 '1'
     IF (&GRPJOB = 'JOB9') CHGVAR &IN39 '1'
     IF (&GRPJOB = 'JOB10') CHGVAR &IN40 '1'
     IF (&GRPJOB = 'JOB11') CHGVAR &IN41 '1'
     IF (&GRPJOB = 'JOB12') CHGVAR &IN42 '1'


      /* 30 80                    */
      /*  1  0  MODIFY COMMAND KEY*/
      /*  1  1  OPTION INPUT      */
      /*  0  1  MODIFY JOB AND JOB COMMAND */
      /*  0  0  MODIFY JOB AND JOB COMMAND */
             CHGVAR     &IN30 '1'
             CHGVAR     &IN80 '1'
/*           CHGVAR     VAR(&TTL1) VALUE('Transfer to Group +
                          Job/Command Key Window')            */
/* DEFAULT KEYS */
             CHGVAR     &IN91 '1'             /* ALT KEYS */
START:
/* DEFAULT BORDER COLOR */
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (901 1)) RTNVAR(&COLOR)
             CHGVAR &IN81 '0'
             CHGVAR &IN82 '0'
             CHGVAR &IN83 '0'
             CHGVAR &IN84 '0'
             CHGVAR &IN85 '0'
             CHGVAR &IN86 '0'
             CHGVAR &IN87 '0'
             IF (&COLOR = '1') CHGVAR &IN81 '1'
             IF (&COLOR = '2') CHGVAR &IN82 '1'
             IF (&COLOR = '3') CHGVAR &IN83 '1'
             IF (&COLOR = '4') CHGVAR &IN84 '1'
             IF (&COLOR = '5') CHGVAR &IN85 '1'
             IF (&COLOR = '6') CHGVAR &IN86 '1'
             IF (&COLOR = '7') CHGVAR &IN87 '1'

/* RETRIEVE ACTIVE GRPJOB COLOR */
             RTVDTAARA  DTAARA(*GDA (121 1)) RTNVAR(&IN61)
             MONMSG     CPF0000 EXEC(CHGVAR &IN61 '0')
             RTVDTAARA  DTAARA(*GDA (122 1)) RTNVAR(&IN62)
             MONMSG     CPF0000 EXEC(CHGVAR &IN62 '0')
             RTVDTAARA  DTAARA(*GDA (123 1)) RTNVAR(&IN63)
             MONMSG     CPF0000 EXEC(CHGVAR &IN63 '0')
             RTVDTAARA  DTAARA(*GDA (124 1)) RTNVAR(&IN64)
             MONMSG     CPF0000 EXEC(CHGVAR &IN64 '0')
             RTVDTAARA  DTAARA(*GDA (125 1)) RTNVAR(&IN65)
             MONMSG     CPF0000 EXEC(CHGVAR &IN65 '0')
             RTVDTAARA  DTAARA(*GDA (126 1)) RTNVAR(&IN66)
             MONMSG     CPF0000 EXEC(CHGVAR &IN66 '0')
             RTVDTAARA  DTAARA(*GDA (127 1)) RTNVAR(&IN67)
             MONMSG     CPF0000 EXEC(CHGVAR &IN67 '0')
             RTVDTAARA  DTAARA(*GDA (128 1)) RTNVAR(&IN68)
             MONMSG     CPF0000 EXEC(CHGVAR &IN68 '0')
             RTVDTAARA  DTAARA(*GDA (129 1)) RTNVAR(&IN69)
             MONMSG     CPF0000 EXEC(CHGVAR &IN69 '0')
             RTVDTAARA  DTAARA(*GDA (130 1)) RTNVAR(&IN70)
             MONMSG     CPF0000 EXEC(CHGVAR &IN70 '0')
             RTVDTAARA  DTAARA(*GDA (131 1)) RTNVAR(&IN71)
             MONMSG     CPF0000 EXEC(CHGVAR &IN71 '0')
             RTVDTAARA  DTAARA(*GDA (132 1)) RTNVAR(&IN72)
             MONMSG     CPF0000 EXEC(CHGVAR &IN72 '0')

             SNDRCVF    RCDFMT(OPTIONS)
             CHGVAR     &MSGLINE ' '

             IF ((&IN01 = '1') *OR (&IN03 = '1') *OR +
                 (&IN12 = '1') ) GOTO END

             IF (&IN02 = '1') DO
                IF (&IN91 = '1') +
                   CHGVAR &IN91 '0'
                ELSE  +
                   CHGVAR &IN91 '1'
             GOTO START
             ENDDO

Retrieve:
             IF ((&IN08 = '1') *OR (&IN09 = '1')) DO

             IF (&IN08 = '1' *AND &CmdMsgKey = ' ') +
                       chgvar    &APIMsgType    *FIRST
             Else IF (&IN08 = '1') +
                       chgvar    &APIMsgType    *NEXT
             Else IF (&IN09 = '1' *AND &CmdMsgKey = ' ') +
                       chgvar    &APIMsgType    *LAST
             Else IF (&IN09 = '1') +
                       chgvar    &APIMsgType    *PRV

             CHGVAR &APIDATA ' '

             call QMHRTVRQ  (+
                       &APIdata       /* Returned data */ +
                       X'000007D0'    /* Data length:  2000 */ +
                       'RTVQ0100'     /* Data format */ +
                       &APIMsgType    /* Type *LAST|*PRV */ +
                       &CmdMsgKey     /* Message key */ +
                       X'00000000'    /* No error data returned */ +
                       )

             /* Exit if no data is returned */

             CHGVAR     &APILENGTH  %SST(&APIDATA 5 4)

             CHGVAR     &LENGTH     %BIN(&APILENGTH)
             /* If no data exist, reset to beginning */
             IF         (&LENGTH *LE 0) DO
               CHGVAR &CMDMSGKEY '    '
               GOTO START
             ENDDO

             /* Retrieve command string from API data and exit */

             CHGVAR     &CMDSTRING  %SST(&APIDATA 41 &LENGTH)
             CHGVAR     &CMDMSGKEY  %SST(&APIDATA 9 4)
             CHGVAR     &CMDLINE    %SST(&CMDSTRING 1 &LENGTH)
             GOTO START
             ENDDO
COLOR:
             IF (&IN11 = '1') DO
             RTVDTAARA  DTAARA(QUSRTEMP/&USER (901 1)) RTNVAR(&COLOR)
             CHGVAR &COLORD &COLOR
               IF (&COLORD <= 6) DO
                  CHGVAR &COLORD (&COLORD + 1)
                  CHGVAR &COLOR &COLORD
               ENDDO
               ELSE DO
                  CHGVAR &COLOR '1'
               ENDDO
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (901 1)) VALUE(&COLOR)
             GOTO START
             ENDDO

/* FUNCTION KEY */
             IF ((&IN13 = '1')  *OR (&IN14 = '1') *OR +
                 (&IN15 = '1')  *OR (&IN16 = '1') *OR +
                 (&IN17 = '1')  *OR (&IN18 = '1') *OR +
                 (&IN19 = '1')  *OR (&IN20 = '1') *OR +
                 (&IN21 = '1')  *OR (&IN22 = '1') *OR +
                 (&IN23 = '1')  *OR (&IN24 = '1')) DO

             IF (&IN13 = '1') CHGVAR &CMDKEY &CMD13
             IF (&IN14 = '1') CHGVAR &CMDKEY &CMD14
             IF (&IN15 = '1') CHGVAR &CMDKEY &CMD15
             IF (&IN16 = '1') CHGVAR &CMDKEY &CMD16
             IF (&IN17 = '1') CHGVAR &CMDKEY &CMD17
             IF (&IN18 = '1') CHGVAR &CMDKEY &CMD18
             IF (&IN19 = '1') CHGVAR &CMDKEY &CMD19
             IF (&IN20 = '1') CHGVAR &CMDKEY &CMD20
             IF (&IN21 = '1') CHGVAR &CMDKEY &CMD21
             IF (&IN22 = '1') CHGVAR &CMDKEY &CMD22
             IF (&IN23 = '1') CHGVAR &CMDKEY &CMD23
             IF (&IN24 = '1') CHGVAR &CMDKEY &CMD24

             IF         COND(&CMDKEY *EQ ' ') THEN(CHGVAR +
                          VAR(&CMDKEY) VALUE('CALL PGM(QSYS/QCMD)'))

             CHGVAR     &CMDSTRING  &CMDKEY

             GOTO EXCCMD
             ENDDO   /* ENDIF CMDKEY */

             IF (&IN07 = '1') DO
                CHGVAR &IN30 '1'
                IF (&IN80='1') DO
                    CHGVAR &IN80 '0'
                 ENDDO
                ELSE  DO
                    GOTO UPDKEY
                 ENDDO
             GOTO START
             ENDDO

             IF (&IN06 = '1') DO
                CHGVAR &IN80 '1'
                IF (&IN30='1') DO
                    CHGVAR &IN30 '0'
                 ENDDO
                ELSE  DO
                    GOTO UPDJOB
                 ENDDO
             GOTO START
             ENDDO
UPDKEY:
             IF ((&IN80 = '0') *AND (&IN30 = '1')) DO
             CHGVAR &IN80 '1'
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (1 25)) VALUE(&CMD13)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (26 25)) VALUE(&CMD14)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (51 25)) VALUE(&CMD15)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (76 25)) VALUE(&CMD16)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (101 25)) VALUE(&CMD17)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (126 25)) VALUE(&CMD18)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (151 25)) VALUE(&CMD19)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (176 25)) VALUE(&CMD20)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (201 25)) VALUE(&CMD21)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (226 25)) VALUE(&CMD22)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (251 25)) VALUE(&CMD23)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (276 25)) VALUE(&CMD24)
             GOTO START
             ENDDO

UPDJOB:
             IF ((&IN80 = '1') *AND (&IN30 = '0')) DO
             CHGVAR &IN30 '1'
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (301 20)) +
                          VALUE(&JOB1)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (321 30)) +
                          VALUE(&JOB1CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (902 1)) +
                          VALUE(&RTRN01)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (351 20)) +
                          VALUE(&JOB2)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (371 30)) +
                          VALUE(&JOB2CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (903 1)) +
                          VALUE(&RTRN02)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (401 20)) +
                          VALUE(&JOB3)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (421 30)) +
                          VALUE(&JOB3CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (904 1)) +
                          VALUE(&RTRN03)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (451 20)) +
                          VALUE(&JOB4)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (471 30)) +
                          VALUE(&JOB4CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (905 1)) +
                          VALUE(&RTRN04)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (501 20)) +
                          VALUE(&JOB5)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (521 30)) +
                          VALUE(&JOB5CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (906 1)) +
                          VALUE(&RTRN05)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (551 20)) +
                          VALUE(&JOB6)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (571 30)) +
                          VALUE(&JOB6CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (907 1)) +
                          VALUE(&RTRN06)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (601 20)) +
                          VALUE(&JOB7)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (521 30)) +
                          VALUE(&JOB7CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (908 1)) +
                          VALUE(&RTRN07)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (651 20)) +
                          VALUE(&JOB8)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (671 30)) +
                          VALUE(&JOB8CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (909 1)) +
                          VALUE(&RTRN08)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (701 20)) +
                          VALUE(&JOB9)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (721 30)) +
                          VALUE(&JOB9CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (910 1)) +
                          VALUE(&RTRN09)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (751 20)) +
                          VALUE(&JOB10)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (771 30)) +
                          VALUE(&JOB10CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (911 1)) +
                          VALUE(&RTRN10)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (801 20)) +
                          VALUE(&JOB11)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (821 30)) +
                          VALUE(&JOB11CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (912 1)) +
                          VALUE(&RTRN11)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (851 20)) +
                          VALUE(&JOB12)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (871 30)) +
                          VALUE(&JOB12CMD)
             CHGDTAARA  DTAARA(QUSRTEMP/&USER (913 1)) +
                          VALUE(&RTRN12)
             GOTO START
             ENDDO

             IF (&CMDLINE *NE *BLANKS) DO
             IF         (&CMDLINE = '1') DO
               IF (&GRPJOB *NE 'JOB1') DO
                  CHGDTAARA DTAARA(*GDA (121 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB1) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '2') DO
               IF (&GRPJOB *NE 'JOB2') DO
                  CHGDTAARA DTAARA(*GDA (122 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB2) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '3') DO
               IF (&GRPJOB *NE 'JOB3') DO
                  CHGDTAARA DTAARA(*GDA (123 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB3) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '4') DO
               IF (&GRPJOB *NE 'JOB4') DO
                  CHGDTAARA DTAARA(*GDA (124 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB4) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '5') DO
               IF (&GRPJOB *NE 'JOB5') DO
                  CHGDTAARA DTAARA(*GDA (125 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB5) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '6') DO
               IF (&GRPJOB *NE 'JOB6') DO
                  CHGDTAARA DTAARA(*GDA (126 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB6) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '7') DO
               IF (&GRPJOB *NE 'JOB7') DO
                  CHGDTAARA DTAARA(*GDA (127 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB6) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '8') DO
               IF (&GRPJOB *NE 'JOB8') DO
                  CHGDTAARA DTAARA(*GDA (128 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB8) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '9') DO
               IF (&GRPJOB *NE 'JOB9') DO
                  CHGDTAARA DTAARA(*GDA (129 1)) VALUE('1')
                  TFRGRPJOB  GRPJOB(JOB9) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '10') DO
               IF (&GRPJOB *NE 'JOB10') DO
                  CHGDTAARA DTAARA(*GDA (130 1)) VALUE('1')
                 TFRGRPJOB  GRPJOB(JOB10) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
             IF         (&CMDLINE = '11') DO
               IF (&GRPJOB *NE 'JOB11') DO
                  CHGDTAARA DTAARA(*GDA (131 1)) VALUE('1')
                 TFRGRPJOB  GRPJOB(JOB11) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO
        ELSE IF         (&CMDLINE = '12') DO
               IF (&GRPJOB *NE 'JOB12') DO
                  CHGDTAARA DTAARA(*GDA (132 1)) VALUE('1')
                 TFRGRPJOB  GRPJOB(JOB12) INLGRPPGM(GRPJOBTFRC)
               ENDDO
               GOTO REPEAT
             ENDDO

             CHGVAR     &CMDSTRING   &CMDLINE

EXCCMD:
        /* Build the options values */

        chgvar    %bin(&APIoptions 1 4) +
                  value(2)       /* Command line type processing */

        chgvar    %sst(&APIoptions 5 1) +
                  value('0')     /* Ignore DBCS */

        chgvar    %sst(&APIoptions 7 1) +
                  value('0')     /* AS/400 command syntax */

        if        (&IN04 = '1' *OR %SST(&CmdString 1 1) = '?') +
                  chgvar %sst(&APIoptions 6 1) +
                  value('1')     /* Prompt command */

        else +
                  chgvar %sst(&APIoptions 6 1) +
                  value('0')     /* No prompt */

        chgvar    %bin(&APIoptions  8 4) 0  /* Reserved area: */
        chgvar    %bin(&APIoptions 12 4) 0  /* must be set to */
        chgvar    %bin(&APIoptions 16 4) 0  /* hexadecimal zeros */
        chgvar    %bin(&APIoptions 19 2) 0

        /* Execute the command string */

        call      QCAPCMD   ( +
                  &CmdString     /* Source command string */ +
                  X'000007D0'    /* String length:  2000 */ +
                  &APIoptions    /* Options control block */ +
                  X'00000014'    /* Options block length:  20 */ +
                  'CPOP0100'     /* Options block format */ +
                  &APIdata       /* Returned command string */ +
                  X'000007D0'    /* Returned string length:  2000 */ +
                  &APILength     /* Command string length returned */ +
                  X'00000000'    /* No error data returned */ +
                  )
             MONMSG     MSGID(CPF6801) EXEC(DO)
             RCVMSG     MSGTYPE(*EXCP) RMV(*NO) MSG(&MSGLINE) +
                          MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +
                          SNDMSGFLIB(&MSGFLIB)
             GOTO CMDERR
             ENDDO
             MONMSG     MSGID(CPF0000) EXEC(DO)
             RCVMSG     MSGTYPE(*DIAG) MSG(&MSGLINE) +
                          MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +
                          SNDMSGFLIB(&MSGFLIB)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGF) MSGDTA(&MSGDTA) +
                          TOPGMQ(*SAME)
             MONMSG CPF0000
             GOTO CMDERR
             ENDDO
/*           CALL       PGM(QCMDCHK) PARM(&CMDSTRING 2000)    */
/*           CALL       PGM(QCMDEXC) PARM(&CMDSTRING 2000)    */

             /* Add command string to job's request messages */
AddCmd:
             SNDPGMMSG  MSG(&CMDSTRING) TOPGMQ(*EXT) MSGTYPE(*RQS) +
                          KEYVAR(&MSGKEY)

             RCVMSG     PGMQ(*EXT) MSGTYPE(*RQS) MSGKEY(&MSGKEY) +
                          RMV(*NO) KEYVAR(&CMDMSGKEY)
             CHGVAR    &CMDSTRING ' '
             CHGVAR    &CMDMSGKEY '    '

CMDERR:
             CHGVAR     &CMDLINE ' '
             GOTO START
REPEAT:
             CHGVAR &CMDLINE ' '
             ENDDO
       /* RESET ACTIVE GROUP JOB DSPATR */
             CHGDTAARA DTAARA(*GDA (121 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (122 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (123 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (124 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (125 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (126 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (127 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (128 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (129 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (130 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (131 1)) VALUE('0')
             CHGDTAARA DTAARA(*GDA (132 1)) VALUE('0')

             CHGVAR VAR(&JOBLST) VALUE(1)
             RTVGRPA    GRPJOB(&GRPJOB) GRPJOBL(&GRPJOBL) +
                          GRPJOBCNT(&GRPJOBCNT)
GRPJOBS:
             IF (&GRPJOBCNT *GT 0) DO
             CHGVAR &GRPJOBN    %SST(&GRPJOBL &JOBLST 10)
             CHGVAR &JOBLST     (&JOBLST + 66)
             IF (&GRPJOBN = 'JOB1')  CHGDTAARA (*GDA (121 1)) '1'
             IF (&GRPJOBN = 'JOB2')  CHGDTAARA (*GDA (122 1)) '1'
             IF (&GRPJOBN = 'JOB3')  CHGDTAARA (*GDA (123 1)) '1'
             IF (&GRPJOBN = 'JOB4')  CHGDTAARA (*GDA (124 1)) '1'
             IF (&GRPJOBN = 'JOB5')  CHGDTAARA (*GDA (125 1)) '1'
             IF (&GRPJOBN = 'JOB6')  CHGDTAARA (*GDA (126 1)) '1'
             IF (&GRPJOBN = 'JOB7')  CHGDTAARA (*GDA (127 1)) '1'
             IF (&GRPJOBN = 'JOB8')  CHGDTAARA (*GDA (128 1)) '1'
             IF (&GRPJOBN = 'JOB9')  CHGDTAARA (*GDA (129 1)) '1'
             IF (&GRPJOBN = 'JOB10') CHGDTAARA (*GDA (130 1)) '1'
             IF (&GRPJOBN = 'JOB11') CHGDTAARA (*GDA (131 1)) '1'
             IF (&GRPJOBN = 'JOB12') CHGDTAARA (*GDA (132 1)) '1'

NEXTJOB:
             CHGVAR VAR(&GRPJOBCNT) VALUE(&GRPJOBCNT - 1)
             GOTO CMDLBL(GRPJOBS)
             ENDDO

             IF (&GRPJOB = 'JOB1') CHGVAR &EXTMNU &RTRN01
        ELSE IF (&GRPJOB = 'JOB2') CHGVAR &EXTMNU &RTRN02
        ELSE IF (&GRPJOB = 'JOB3') CHGVAR &EXTMNU &RTRN03
        ELSE IF (&GRPJOB = 'JOB4') CHGVAR &EXTMNU &RTRN04
        ELSE IF (&GRPJOB = 'JOB5') CHGVAR &EXTMNU &RTRN05
        ELSE IF (&GRPJOB = 'JOB6') CHGVAR &EXTMNU &RTRN06
        ELSE IF (&GRPJOB = 'JOB7') CHGVAR &EXTMNU &RTRN07
        ELSE IF (&GRPJOB = 'JOB8') CHGVAR &EXTMNU &RTRN08
        ELSE IF (&GRPJOB = 'JOB9') CHGVAR &EXTMNU &RTRN09
        ELSE IF (&GRPJOB = 'JOB10') CHGVAR &EXTMNU &RTRN10
             IF (&GRPJOB = 'JOB11') CHGVAR &EXTMNU &RTRN11
        ELSE IF (&GRPJOB = 'JOB12') CHGVAR &EXTMNU &RTRN12

             IF (&EXTMNU *NE 'Y')  GOTO START

END:
             RETURN

STDERR:     RCVMSG     MSGTYPE(*LAST) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) SNDMSGFLIB(&MSGFLIB)
             IF         COND(&MSGID *EQ '       ') THEN(GOTO +
                          CMDLBL(EOJ))
             SNDUSRMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*INFO)
             GOTO       CMDLBL(STDERR)
             GOTO       CMDLBL(EOJ)

EOJ:        IF         COND(%SWITCH(XXXXXXX1)) THEN(DMPCLPGM)
             RETURN
             ENDPGM


沒有留言: