星期三, 11月 01, 2023

2001-12-15 工具: CHGSCDTIM 更改工作排程時間


工具: CHGSCDTIM 更改工作排程時間

The following source code was provided by Randy Gish .

It is the reader's responsibility to ensure that procedures and techniques
used from this code are accurate and appropriate for the user's installation.
No warranty is implied or expressed. Please back up your files before you run
a new procedure or program or make significant changes to disk files, and be
sure to test all procedures and programs before putting them into production.


CHGSCDTIM Command Source:

             CMD        PROMPT('Change Job Schedule Time')

             PARM       KWD(JOBNAM) TYPE(*NAME) LEN(10) MIN(1) +
                          PROMPT('Scheduled Job Name')
             PARM       KWD(INCREMENT) TYPE(*CHAR) LEN(6) MIN(1) +
                          PROMPT('Increment Time (HHMMSS)')
             PARM       KWD(CUTOFF) TYPE(*CHAR) LEN(6) +
                          PROMPT('Cutoff Time (HHMMSS)')
             PARM       KWD(RESET) TYPE(*CHAR) LEN(6) +
                          PROMPT('Reset Time (HHMMSS)')
             PARM       KWD(TIMVAL) TYPE(*CHAR) LEN(4) RSTD(*YES) +
                          DFT(*SCD) VALUES(*SCD *SYS) PROMPT('Time +
                          Value to Increment')


CHGSCDTIM Command Processing Program Source:

/* This program increments the scheduled time for a Job Schedule Entry. The   */
/* increment, cutoff, and reset times should be passed as 'HHMMSS'.           */

             PGM        PARM(&JOBSCDNAM &INCREMENT &CUTOFF &RESET &TIMVAL)

             DCL        VAR(&JOBSCDNAM) TYPE(*CHAR) LEN(10)
             DCL        VAR(&INCREMENT) TYPE(*CHAR) LEN(6)
             DCL        VAR(&CUTOFF) TYPE(*CHAR) LEN(6)
             DCL        VAR(&RESET) TYPE(*CHAR) LEN(6)
             DCL        VAR(&TIMVAL) TYPE(*CHAR) LEN(4)
             DCL        VAR(&USRSPC) TYPE(*CHAR) LEN(20) +
                          VALUE('CHGSCDTIM QTEMP     ') /* USER +
                          SPACE NAME FOR APIS */
             DCL        VAR(&CNTHDL) TYPE(*CHAR) LEN(16) +
                          VALUE('                ') /* CONTINUATION +
                          HANDLE */
             DCL        VAR(&NUMENTB) TYPE(*CHAR) LEN(4) /* NUMBER +
                          OF ENTRIES FROM LIST JOB SCHEDULE ENTRIES +
                          IN BINARY FORM */
             DCL        VAR(&NUMENT) TYPE(*DEC) LEN(8 0) /* NUMBER +
                          OF ENTRIES FROM LIST JOB SCHEDULE ENTRIES +
                          IN DECIMAL FORM */
             DCL        VAR(&GENHDR) TYPE(*CHAR) LEN(140) /* GENERIC +
                          HEADER INFORMATION FROM THE USER SPACE */
             DCL        VAR(&LSTSTS) TYPE(*CHAR) LEN(1) /* STATUS OF +
                          THE LIST IN THE USER SPACE */
             DCL        VAR(&OFFSETB) TYPE(*CHAR) LEN(4) /* OFFSET +
                          TO THE LIST PORTION OF THE USER SPACE IN +
                          BINARY FORM */
             DCL        VAR(&STRPOSB) TYPE(*CHAR) LEN(4) /* STARTING +
                          POSITION IN THE USER SPACE  IN BINARY FORM */
             DCL        VAR(&ELENB) TYPE(*CHAR) LEN(4) /* LIST JOB +
                          ENTRY LENGTH IN BINARY 4 FORM */
             DCL        VAR(&LENTRY) TYPE(*CHAR) LEN(1156) /* +
                          RETRIEVE AREA FOR LIST JOB SCHEDULE ENTRY */
             DCL        VAR(&INCHH) TYPE(*CHAR) LEN(2)
             DCL        VAR(&INCMM) TYPE(*CHAR) LEN(2)
             DCL        VAR(&INCSS) TYPE(*CHAR) LEN(2)
             DCL        VAR(&INCHH#) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&INCMM#) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&INCSS#) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&SCDHH) TYPE(*CHAR) LEN(2)
             DCL        VAR(&SCDMM) TYPE(*CHAR) LEN(2)
             DCL        VAR(&SCDSS) TYPE(*CHAR) LEN(2)
             DCL        VAR(&SCDHH#) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&SCDMM#) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&SCDSS#) TYPE(*DEC) LEN(2 0)
             DCL        VAR(&SCDTIME) TYPE(*CHAR) LEN(6)
             DCL        VAR(&NEWHH#) TYPE(*DEC) LEN(3 0)
             DCL        VAR(&NEWMM#) TYPE(*DEC) LEN(3 0)
             DCL        VAR(&NEWSS#) TYPE(*DEC) LEN(3 0)
             DCL        VAR(&NEWTIME) TYPE(*CHAR) LEN(6)
             DCL        VAR(&SYSTIME) TYPE(*CHAR) LEN(6)
             DCL        VAR(&MSGID) TYPE(*CHAR) LEN(07)
             DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGL) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(132)

             MONMSG     MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(ERROR))

/* Delete the user space if it already exists.                      */
             DLTUSRSPC  USRSPC(QTEMP/CHGSCDTIM)
             MONMSG     MSGID(CPF0000)

/* Create the user space. The user space will be 256 bytes and      */
/* will be initialized to blanks.                                   */
             CALL       PGM(QUSCRTUS) PARM(&USRSPC 'CHGSCDTIM ' +
                          X'00000100' ' ' '*ALL      ' 'TEMPORARY +
                          USER SPACE                               ')
             MONMSG     MSGID(CPF3C00) EXEC(GOTO CMDLBL(ERROR))

/* List the job schedule entry of the name specified.               */
             CALL       PGM(QWCLSCDE) PARM(&USRSPC 'SCDL0200' +
                          &JOBSCDNAM &CNTHDL 0)

/* Retrieve the generic header from the user space.                 */
             CALL       PGM(QUSRTVUS) PARM(&USRSPC X'00000001' +
                          X'0000008C' &GENHDR)
             MONMSG     MSGID(CPF3C00) EXEC(GOTO CMDLBL(ERROR))

/* Get the information status for the list from the generic header. */
             CHGVAR     VAR(&LSTSTS) VALUE(%SST(&GENHDR 104 1))
             IF         COND(&LSTSTS = 'I') THEN(GOTO CMDLBL(ENDPGM))

/* Get the number of entries returned and convert to decimal.       */
/* If zero, go to ENDPGM.                                           */
             CHGVAR     VAR(&NUMENTB) VALUE(%SST(&GENHDR 133 4))
             CHGVAR     VAR(&NUMENT) VALUE(%BIN(&NUMENTB))
             IF         COND(&NUMENT = 0) THEN(GOTO CMDLBL(ENDPGM))

/* Get the list entry length and offset. These values are used to   */
/* set up the starting position.                                    */
             CHGVAR     VAR(&ELENB) VALUE(%SST(&GENHDR 137 4))
             CHGVAR     VAR(&OFFSETB) VALUE(%SST(&GENHDR 125 4))
             CHGVAR     VAR(%BIN(&STRPOSB)) VALUE(%BIN(&OFFSETB) + 1)

/* Retrieve the list entry.                                         */
             CALL       PGM(QUSRTVUS) PARM(&USRSPC &STRPOSB &ELENB +
                          &LENTRY)
             MONMSG     MSGID(CPF3C00) EXEC(GOTO CMDLBL(ERROR))

/* Retrieve the scheduled time if TIMVAL = *SCD                     */
             IF         COND(&TIMVAL = '*SCD') +
             THEN(DO)
               CHGVAR     VAR(&SCDHH) VALUE(%SST(&LENTRY 102 2))
               CHGVAR     VAR(&SCDMM) VALUE(%SST(&LENTRY 104 2))
               CHGVAR     VAR(&SCDSS) VALUE(%SST(&LENTRY 106 2))
               CHGVAR     VAR(&SCDHH#) VALUE(&SCDHH)
               CHGVAR     VAR(&SCDMM#) VALUE(&SCDMM)
               CHGVAR     VAR(&SCDSS#) VALUE(&SCDSS)
               CHGVAR     VAR(&SCDTIME) VALUE(&SCDHH || &SCDMM || +
                            &SCDSS)
             ENDDO

/* Parse current time if TIMVAL = *SYS                              */
             IF         COND(&TIMVAL = '*SYS') +
             THEN(DO)
               RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&SYSTIME)
               CHGVAR     VAR(&SCDHH) VALUE(%SST(&SYSTIME 1 2))
               CHGVAR     VAR(&SCDMM) VALUE(%SST(&SYSTIME 3 2))
               CHGVAR     VAR(&SCDSS) VALUE(%SST(&SYSTIME 5 2))
               CHGVAR     VAR(&SCDHH#) VALUE(&SCDHH)
               CHGVAR     VAR(&SCDMM#) VALUE(&SCDMM)
               CHGVAR     VAR(&SCDSS#) VALUE(&SCDSS)
               CHGVAR     VAR(&SCDTIME) VALUE(&SCDHH || &SCDMM || +
                            &SCDSS)
             ENDDO

/* Parse increment time                                                       */
             CHGVAR     VAR(&INCHH) VALUE(%SST(&INCREMENT 1 2))
             CHGVAR     VAR(&INCMM) VALUE(%SST(&INCREMENT 3 2))
             CHGVAR     VAR(&INCSS) VALUE(%SST(&INCREMENT 5 2))
             CHGVAR     VAR(&INCHH#) VALUE(&INCHH)
             CHGVAR     VAR(&INCMM#) VALUE(&INCMM)
             CHGVAR     VAR(&INCSS#) VALUE(&INCSS)

/* Calculate new scheduled time                                     */
             CHGVAR     VAR(&NEWHH#) VALUE(&SCDHH# + &INCHH#)
             CHGVAR     VAR(&NEWMM#) VALUE(&SCDMM# + &INCMM#)
             CHGVAR     VAR(&NEWSS#) VALUE(&SCDSS# + &INCSS#)
             IF         COND(&NEWSS# >= 60) +
             THEN(DO)
               CHGVAR     VAR(&NEWSS#) VALUE(&NEWSS# - 60)
               CHGVAR     VAR(&NEWMM#) VALUE(&NEWMM# + 1)
             ENDDO
             IF         COND(&NEWMM# >= 60) +
             THEN(DO)
               CHGVAR     VAR(&NEWMM#) VALUE(&NEWMM# - 60)
               CHGVAR     VAR(&NEWHH#) VALUE(&NEWHH# + 1)
             ENDDO
             IF         COND(&NEWHH# >= 24) +
             THEN(DO)
               CHGVAR     VAR(&NEWHH#) VALUE(&NEWHH# - 24)
             ENDDO
             CHGVAR     VAR(&SCDHH#) VALUE(&NEWHH#)
             CHGVAR     VAR(&SCDMM#) VALUE(&NEWMM#)
             CHGVAR     VAR(&SCDSS#) VALUE(&NEWSS#)
             CHGVAR     VAR(&SCDHH) VALUE(&SCDHH#)
             CHGVAR     VAR(&SCDMM) VALUE(&SCDMM#)
             CHGVAR     VAR(&SCDSS) VALUE(&SCDSS#)
             CHGVAR     VAR(&NEWTIME) VALUE(&SCDHH || &SCDMM || +
                          &SCDSS)

/* Check if new time exceeds cutoff time                            */
             IF         COND(&CUTOFF *NE ' ' *AND &RESET *NE ' ' +
                          *AND (&NEWTIME *LT &SCDTIME *OR &NEWTIME +
                          *GE &CUTOFF)) THEN(CHGVAR VAR(&NEWTIME) +
                          VALUE(&RESET))

/* Update job schedule entry                                        */
             CHGJOBSCDE JOB(&JOBSCDNAM) SCDTIME(&NEWTIME)

             GOTO       CMDLBL(ENDPGM)

ERROR:       RCVMSG     MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +
                          MSGFLIB(&MSGL)
             MONMSG     MSGID(CPF0000)

             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGL/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
             MONMSG     MSGID(CPF0000)

 ENDPGM:     DLTUSRSPC  USRSPC(QTEMP/CHGSCDTIM)
             MONMSG     MSGID(CPF0000)

             ENDPGM


CHGSCDTIM Command Validity Checker Source:

/* This program is the validity checker for the CHGSCDTIM (Change Schedule    */
/* Time) command. It verifies that the job exists and that the increment,     */
/* cutoff, and reset times are valid.                                         */

             PGM        PARM(&JOBSCDNAM &INCREMENT &CUTOFF &RESET &TIMVAL)

             DCL        VAR(&JOBSCDNAM) TYPE(*CHAR) LEN(10)
             DCL        VAR(&INCREMENT) TYPE(*CHAR) LEN(6)
             DCL        VAR(&CUTOFF) TYPE(*CHAR) LEN(6)
             DCL        VAR(&RESET) TYPE(*CHAR) LEN(6)
             DCL        VAR(&TIMVAL) TYPE(*CHAR) LEN(4)
             DCL        VAR(&USRSPC) TYPE(*CHAR) LEN(20) +
                          VALUE('CHGSCDTIM QTEMP     ') /* USER +
                          SPACE NAME FOR APIS */
             DCL        VAR(&CNTHDL) TYPE(*CHAR) LEN(16) +
                          VALUE('                ') /* CONTINUATION +
                          HANDLE */
             DCL        VAR(&NUMENTB) TYPE(*CHAR) LEN(4) /* NUMBER +
                          OF ENTRIES FROM LIST JOB SCHEDULE ENTRIES +
                          IN BINARY FORM */
             DCL        VAR(&NUMENT) TYPE(*DEC) LEN(8 0) /* NUMBER +
                          OF ENTRIES FROM LIST JOB SCHEDULE ENTRIES +
                          IN DECIMAL FORM */
             DCL        VAR(&GENHDR) TYPE(*CHAR) LEN(140) /* GENERIC +
                          HEADER INFORMATION FROM THE USER SPACE */
             DCL        VAR(&LSTSTS) TYPE(*CHAR) LEN(1) /* STATUS OF +
                          THE LIST IN THE USER SPACE */
             DCL        VAR(&OFFSETB) TYPE(*CHAR) LEN(4) /* OFFSET +
                          TO THE LIST PORTION OF THE USER SPACE IN +
                          BINARY FORM */
             DCL        VAR(&STRPOSB) TYPE(*CHAR) LEN(4) /* STARTING +
                          POSITION IN THE USER SPACE  IN BINARY FORM */
             DCL        VAR(&ELENB) TYPE(*CHAR) LEN(4) /* LIST JOB +
                          ENTRY LENGTH IN BINARY 4 FORM */
             DCL        VAR(&LENTRY) TYPE(*CHAR) LEN(1156) /* +
                          RETRIEVE AREA FOR LIST JOB SCHEDULE ENTRY */
             DCL        VAR(&HH) TYPE(*CHAR) LEN(2)
             DCL        VAR(&MM) TYPE(*CHAR) LEN(2)
             DCL        VAR(&SS) TYPE(*CHAR) LEN(2)
             DCL        VAR(&MSGID) TYPE(*CHAR) LEN(07)
             DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGL) TYPE(*CHAR) LEN(10)
             DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(132)

             MONMSG     MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(ERROR))

/* Delete the user space if it already exists.                      */
             DLTUSRSPC  USRSPC(QTEMP/CHGSCDTIM)
             MONMSG     MSGID(CPF0000)

/* Create the user space. The user space will be 256 bytes and      */
/* will be initialized to blanks.                                   */
             CALL       PGM(QUSCRTUS) PARM(&USRSPC 'CHGSCDTIM ' +
                          X'00000100' ' ' '*ALL      ' 'TEMPORARY +
                          USER SPACE                               ')
             MONMSG     MSGID(CPF3C00) EXEC(GOTO CMDLBL(ERROR))

/* List the job schedule entry of the name specified.               */
             CALL       PGM(QWCLSCDE) PARM(&USRSPC 'SCDL0200' +
                          &JOBSCDNAM &CNTHDL 0)

/* Retrieve the generic header from the user space.                 */
             CALL       PGM(QUSRTVUS) PARM(&USRSPC X'00000001' +
                          X'0000008C' &GENHDR)
             MONMSG     MSGID(CPF3C00) EXEC(GOTO CMDLBL(ERROR))

/* Get the information status for the list from the generic header. */
             CHGVAR     VAR(&LSTSTS) VALUE(%SST(&GENHDR 104 1))
             IF         COND(&LSTSTS = 'I') THEN(GOTO CMDLBL(ENDPGM))

/* Get the number of entries returned and convert to decimal.       */
/* If zero, send error message and exit.                            */
             CHGVAR     VAR(&NUMENTB) VALUE(%SST(&GENHDR 133 4))
             CHGVAR     VAR(&NUMENT) VALUE(%BIN(&NUMENTB))
             IF         COND(&NUMENT = 0) +
             THEN(DO)
               SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA('0000 +
                            Job name ' *CAT &JOBSCDNAM *TCAT ' not found +
                            on Job Schedule.') MSGTYPE(*DIAG)
               SNDPGMMSG  MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
               GOTO       CMDLBL(ENDPGM)
             ENDDO

/* Get the list entry length and offset. These values are used to   */
/* set up the starting position.                                    */
             CHGVAR     VAR(&ELENB) VALUE(%SST(&GENHDR 137 4))
             CHGVAR     VAR(&OFFSETB) VALUE(%SST(&GENHDR 125 4))
             CHGVAR     VAR(%BIN(&STRPOSB)) VALUE(%BIN(&OFFSETB) + 1)

/* Retrieve the list entry.                                         */
             CALL       PGM(QUSRTVUS) PARM(&USRSPC &STRPOSB &ELENB +
                          &LENTRY)
             MONMSG     MSGID(CPF3C00) EXEC(GOTO CMDLBL(ERROR))

             IF         COND(%SST(&LENTRY 2 10) *NE &JOBSCDNAM) +
             THEN(DO)
               SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA('0000 +
                            Job name ' *CAT &JOBSCDNAM *TCAT ' not found +
                            on Job Schedule.') MSGTYPE(*DIAG)
               SNDPGMMSG  MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
               GOTO       CMDLBL(ENDPGM)
             ENDDO

/* Check increment time                                                       */
             CHGVAR     VAR(&HH) VALUE(%SST(&INCREMENT 1 2))
             CHGVAR     VAR(&MM) VALUE(%SST(&INCREMENT 3 2))
             CHGVAR     VAR(&SS) VALUE(%SST(&INCREMENT 5 2))

             IF         COND(&HH *LT '00' *OR &HH *GT '23' *OR +
                          &MM *LT '00' *OR &MM *GT '59' *OR +
                          &SS *LT '00' *OR &SS *GT '59') +
             THEN(DO)
               SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA('0000 +
                            Increment time is not valid.') MSGTYPE(*DIAG)
               SNDPGMMSG  MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
             ENDDO

/* Check cutoff time                                                          */
             IF         COND(&CUTOFF *NE ' ') +
             THEN(DO)

             CHGVAR     VAR(&HH) VALUE(%SST(&CUTOFF 1 2))
             CHGVAR     VAR(&MM) VALUE(%SST(&CUTOFF 3 2))
             CHGVAR     VAR(&SS) VALUE(%SST(&CUTOFF 5 2))

             IF         COND(&HH *LT '00' *OR &HH *GT '24' *OR +
                          &MM *LT '00' *OR &MM *GT '59' *OR +
                          &SS *LT '00' *OR &SS *GT '59') +
             THEN(DO)
               SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA('0000 +
                            Cutoff time is not valid.') MSGTYPE(*DIAG)
               SNDPGMMSG  MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
             ENDDO

/* Check reset time                                                           */
             CHGVAR     VAR(&HH) VALUE(%SST(&RESET 1 2))
             CHGVAR     VAR(&MM) VALUE(%SST(&RESET 3 2))
             CHGVAR     VAR(&SS) VALUE(%SST(&RESET 5 2))

             IF         COND(&HH *LT '00' *OR &HH *GT '23' *OR +
                          &MM *LT '00' *OR &MM *GT '59' *OR +
                          &SS *LT '00' *OR &SS *GT '59') +
             THEN(DO)
               SNDPGMMSG  MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA('0000 +
                            Reset time is not valid.') MSGTYPE(*DIAG)
               SNDPGMMSG  MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE)
             ENDDO

             ENDDO

             GOTO       CMDLBL(ENDPGM)

ERROR:
             RCVMSG     MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +
                          MSGFLIB(&MSGL)
             MONMSG     MSGID(CPF0000)

             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGL/&MSGF) +
                          MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)
             MONMSG     MSGID(CPF0000)

 ENDPGM:     DLTUSRSPC  USRSPC(QTEMP/CHGSCDTIM)
             MONMSG     MSGID(CPF0000)

             ENDPGM

CHGSCDTIM Help Panel Group Source:

:PNLGRP.
:HELP name=CHGSCDTIMP.
:P.
The "Change Job Schedule Time" (CHGSCDTIM) command increments the
schedule time for a job on the AS/400 job scheduler. This enables
you to submit a job from the scheduler on a periodic basis of less
than a day (e.g., every hour or every 15 minutes). Simply run the
CHGSCDTIM command from your program that is called by the scheduler
and specify the job name and the increment time in HHMMSS format.
The schedule time for the job will be incremented by the amount of
time you specified. You can increment the currently scheduled time
or the current system time. You can also optionally specify a cutoff
and reset time. This would enable you to run a job periodically
within certain times each day (e.g., every hour from 8:00 a.m. to
8:00 p.m.).
:EHELP.
:HELP name='CHGSCDTIMP/JOBNAM'.
:P.
Scheduled Job Name:

:LINES.
    This is the name of the job as you defined it on
    the job scheduler.
:ELINES.
:EHELP.
:HELP name='CHGSCDTIMP/INCREMENT'.
:P.
Increment time:

:LINES.
    This is the amount of time you would like to increment
    the scheduled job. The format is HHMMSS.
:ELINES.
:EHELP.
:HELP name='CHGSCDTIMP/CUTOFF'.
:P.
Cutoff time:

:LINES.
    This is the time of day you would like to stop
    incrementing the job. The format is HHMMSS. If a
    cutoff time is specified, a reset time is required.
:ELINES.
:EHELP.
:HELP name='CHGSCDTIMP/RESET'.
:P.
Reset time:

:LINES.
    This is the time of day you would like to restart the
    job. The format is HHMMSS. A reset time is required
    if a cutoff time is specified.
:ELINES.
:EHELP.
:HELP name='CHGSCDTIMP/TIMVAL'.
:P.
Time value:

:LINES.
    This is the time value that you would like to
    increment. *SCD will increment the time on the
    scheduler. *SYS will set the schedule time to
    the current time plus the increment.
:ELINES.
:EHELP.
:EPNLGRP.


The following CL program can be used to create the CHGSCDTIM command.
The program assumes that the source is in QGPL/CSTCMDSRC:

             PGM

             DCL        VAR(&LIBRARY) TYPE(*CHAR) LEN(10) VALUE('QGPL')
             DCL        VAR(&SRCFILE) TYPE(*CHAR) LEN(10) VALUE('CSTCMDSRC')

             /* Create Command Processing Program                         */
             CRTCLPGM   PGM(&LIBRARY/CHGSCDTIMC) SRCFILE(&LIBRARY/&SRCFILE)

             /* Create Validity Checker Program                           */
             CRTCLPGM   PGM(&LIBRARY/CHGSCDTIMV) SRCFILE(&LIBRARY/&SRCFILE)

             /* Create Help Panel Group                                   */
             CRTPNLGRP  PNLGRP(&LIBRARY/CHGSCDTIMP) +
                          SRCFILE(&LIBRARY/&SRCFILE)

             /* Create Change Job Schedule Time Command                   */
             CRTCMD     CMD(&LIBRARY/CHGSCDTIM) PGM(&LIBRARY/CHGSCDTIMC) +
                          SRCFILE(&LIBRARY/&SRCFILE) +
                          VLDCKR(&LIBRARY/CHGSCDTIMV) +
                          HLPPNLGRP(&LIBRARY/CHGSCDTIMP) HLPID(CHGSCDTIMP)

             ENDPGM


沒有留言: