Wenn es denn CL sein soll...
Ich habe ein CHKACTJOB, das gibt über das API QUSCRTUS den entsprechenden Job mit Status und ein paar Attributen zurück...
Code:
/* PROGRAM : CHKACTJOB */
/* SYSTEM : ISERIES */
/* */
/* CHECK IF A CERTAIN JOBNAME IS ACTIVE */
/* */
/* HOW TO EXECUTE : */
/* */
/* CALL CHKACTJOB PARM(&PRM_JBNAM &RC) */
/* WHERE &PRM_JBNAM IS THE JOBNAME YOU WANT TO CHECK */
/* AND &RC IS THE RESULTING RETURN CODE : */
/* '1' = ACTIVE */
/* '0' = NOT ACTIVE */
/* */
/* IF THE &DEBUG VARIABLE IS SET TO '1' THEN THIS */
/* PROGRAM LISTS ALSO ALL JOBS THAT ARE ACTIVE WITH */
/* THE SPECIFIED JOBNAME VIA A SNDPGMMSG COMMAND */
/* */
/* */
CHKACTJOB: PGM PARM(&PRM_JBNAM &RC)
DCL VAR(&DEBUG) TYPE(*LGL) VALUE('1') /* 1 = +
DEBUG */
/* PARAMETERS FOR THIS PROGRAM */
DCL VAR(&PRM_JBNAM) TYPE(*CHAR) LEN(10) /* +
JOBNAME */
DCL VAR(&RC) TYPE(*CHAR) LEN(1) /* RETURN CODE +
('1' = JOB IS ACTIVE; '0' = JOB IS NOT +
ACTIVE) */
/* API DATA FROM FORMAT JOBL0100 */
DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&USER ) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBNBR ) TYPE(*CHAR) LEN(6)
DCL VAR(&STATUS) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBTYPE) TYPE(*CHAR) LEN(1)
DCL VAR(&SUBTYPE) TYPE(*CHAR) LEN(1)
/* PARAMETERS FOR THE QUSCRTUS API */
DCL VAR(&USP_NAME) TYPE(*CHAR) LEN(10) /* USER +
SPACE NAME */
DCL VAR(&USP_LIB) TYPE(*CHAR) LEN(10) /* USER +
SPACE LIBRARY */
DCL VAR(&USP_QUAL) TYPE(*CHAR) LEN(20) /* USER +
SPACE QUALIFIED NAME */
DCL VAR(&USP_TYPE) TYPE(*CHAR) LEN(10) /* USER +
SPACE TYPE */
DCL VAR(&USP_SIZE) TYPE(*CHAR) LEN(4) /* USER +
SPACE SIZE */
DCL VAR(&USP_FILL) TYPE(*CHAR) LEN(1) /* USER +
SPACE FILL CHARACTER */
DCL VAR(&USP_AUT) TYPE(*CHAR) LEN(10) /* USER +
SPACE AUTHORITY */
DCL VAR(&USP_TEXT) TYPE(*CHAR) LEN(50) /* USER +
SPACE TEXT */
/* PARAMETERS FOR THE QUSRTVUS API */
DCL VAR(&STARTPOS) TYPE(*CHAR) LEN(4)
DCL VAR(&DATALEN ) TYPE(*CHAR) LEN(4)
DCL VAR(&HEADER) TYPE(*CHAR) LEN(150)
/* PARAMETERS FOR THE QUSLJOB API */
DCL VAR(&API_USQUAL) TYPE(*CHAR) LEN(20) /* +
QUALIFIED USER SPACE NAME */
DCL VAR(&API_JBQUAL) TYPE(*CHAR) LEN(26) /* +
QUALIFIED JOBNAME */
DCL VAR(&API_JBNAM) TYPE(*CHAR) LEN(10) /* +
JOBNAME */
DCL VAR(&API_USER) TYPE(*CHAR) LEN(10) /* USER */
DCL VAR(&API_JOBNR) TYPE(*CHAR) LEN(6) /* JOB +
NUMBER */
DCL VAR(&API_ERROR) TYPE(*CHAR) LEN(256) /* API +
ERROR */
DCL VAR(&API_STATUS) TYPE(*CHAR) LEN(10) /* +
STATUS */
/* LIST DATA SECTION */
DCL VAR(&LST_OFFSET) TYPE(*DEC) LEN(5 0) /* +
OFFSET OF FIRST DATA */
DCL VAR(&LST_SIZE) TYPE(*DEC) LEN(5 0) /* SIZE +
OF DATA */
DCL VAR(&LST_DATA) TYPE(*CHAR) LEN(4096)
DCL VAR(&LST_NBR) TYPE(*DEC) LEN(5 0) /* NUMBER +
OF ENTRIES IN LIST DATA SECTION */
DCL VAR(&LST_LEN) TYPE(*DEC) LEN(5 0) /* ENTRY +
LENGTH IN DEC */
DCL VAR(&LST_LENBIN) TYPE(*CHAR) LEN(4) /* ENTRY +
LENGTH IN BINARY */
DCL VAR(&LST_POSBIN) TYPE(*CHAR) LEN(4) /* +
POSITION OF LIST ENTRY IN BINARY */
/* VARIABLES */
DCL VAR(&LST_COUNT) TYPE(*DEC) LEN(5) VALUE(0) /* +
COUNTER */
/* INITIALIZE RETURN CODE */
CHGVAR VAR(&RC) VALUE('0')
/* CREATE USER SPACE */
CHGVAR VAR(&USP_NAME) VALUE('MYUSRSPACE') /* SET +
USER SPACE NAME */
CHGVAR VAR(&USP_LIB) VALUE('QTEMP') /* SET USER +
SPACE LIBRARY */
CHGVAR VAR(&USP_QUAL) VALUE(&USP_NAME *CAT +
&USP_LIB) /* SET USER SPACE QUALIFIED NAME */
CHGVAR VAR(&USP_TYPE) VALUE('MYTYPE') /* SET USER +
SPACE TYPE */
CHGVAR VAR(%BIN(&USP_SIZE)) VALUE(64000) /* SET +
USER SPACE SIZE */
CHGVAR VAR(&USP_FILL) VALUE(' ') /* SET USER SPACE +
FILL CHARACTER */
CHGVAR VAR(&USP_AUT) VALUE('*USE') /* SET USER +
SPACE AUTHORITY */
CHGVAR VAR(&USP_TEXT) VALUE('MY USER SPACE') +
/* SET USER SPACE TEXT */
CALL PGM(QUSCRTUS) PARM(&USP_QUAL &USP_TYPE +
&USP_SIZE &USP_FILL &USP_AUT &USP_TEXT)
/* EXECUTE API */
CHGVAR VAR(&API_USQUAL) VALUE(&USP_QUAL) /* USER +
SPACE NAME */
CHGVAR VAR(&API_JBNAM) VALUE(&PRM_JBNAM) /* JOBNAME */
CHGVAR VAR(&API_USER) VALUE('*ALL') /* USER */
CHGVAR VAR(&API_JOBNR) VALUE('*ALL') /* JOB NUMBER */
CHGVAR VAR(&API_STATUS) VALUE('*ACTIVE') /* STATUS +
OF THE JOB */
CHGVAR VAR(&API_JBQUAL) VALUE(&API_JBNAM *CAT +
&API_USER *CAT &API_JOBNR) /* QUALIFIED +
JOB NAME */
CHGVAR VAR(%BIN(&API_ERROR 1 4)) VALUE(0)
CALL PGM(QUSLJOB) PARM(&API_USQUAL 'JOBL0100' +
&API_JBQUAL &API_STATUS &API_ERROR)
/* RETRIEVE HEADER DESCRIPTION INFORMATION */
CHGVAR VAR(%BIN(&STARTPOS)) VALUE(1) /* SET START +
POSITION */
CHGVAR VAR(%BIN(&DATALEN)) VALUE(140) /* SET DATA +
LENGTH */
CALL PGM(QUSRTVUS) PARM(&API_USQUAL &STARTPOS +
&DATALEN &HEADER)
/* RETRIEVE DATA IN LIST SECTION */
CHGVAR VAR(&LST_OFFSET) VALUE(%BIN(&HEADER 125 4))
CHGVAR VAR(&LST_SIZE) VALUE(%BIN(&HEADER 129 4))
CHGVAR VAR(&LST_NBR) VALUE(%BIN(&HEADER 133 4))
CHGVAR VAR(&LST_LEN) VALUE(%BIN(&HEADER 137 4))
CHGVAR VAR(%BIN(&LST_POSBIN)) VALUE(&LST_OFFSET + 1)
CHGVAR VAR(&LST_LENBIN) VALUE(%SST(&HEADER 137 4))
/* RETRIEVE LIST DATA ENTRIES */
CHGVAR VAR(&LST_COUNT) VALUE(0) /* INITIALIZE +
NUMBER OF LIST ENTRIES COUNTER */
LST_LOOP: IF COND(&LST_COUNT *EQ &LST_NBR) THEN(GOTO +
CMDLBL(LST_END))
CALL PGM(QUSRTVUS) PARM(&API_USQUAL &LST_POSBIN +
&LST_LENBIN &LST_DATA)
CHGVAR VAR(&JOBNAME) VALUE(%SST(&LST_DATA 1 10))
CHGVAR VAR(&USER) VALUE(%SST(&LST_DATA 11 10))
CHGVAR VAR(&JOBNBR) VALUE(%SST(&LST_DATA 21 6))
CHGVAR VAR(&STATUS) VALUE(%SST(&LST_DATA 43 10))
CHGVAR VAR(&JOBTYPE) VALUE(%SST(&LST_DATA 53 1))
CHGVAR VAR(&SUBTYPE) VALUE(%SST(&LST_DATA 54 1))
/* TREATMENT OF 1 LIST ENTRY */
IF COND(&DEBUG) THEN(DO)
SNDPGMMSG MSG('** JOB IDENTIFICATION **')
SNDPGMMSG MSG('JOB NAME : ' *CAT &JOBNAME)
SNDPGMMSG MSG('USER : ' *CAT &USER)
SNDPGMMSG MSG('JOBNBR : ' *CAT &JOBNBR)
SNDPGMMSG MSG('STATUS : ' *CAT &STATUS)
SNDPGMMSG MSG('JOB TYPE : ' *CAT &JOBTYPE)
SNDPGMMSG MSG('SUBTYPE : ' *CAT &SUBTYPE)
ENDDO
IF COND((&JOBNAME *EQ &PRM_JBNAM) *AND (&STATUS +
*EQ *ACTIVE)) THEN(DO)
CHGVAR VAR(&RC) VALUE('1')
ENDDO
/* END TREATMENT OF 1 LIST ENTRY */
CHGVAR VAR(&LST_COUNT) VALUE(&LST_COUNT + 1)
CHGVAR VAR(%BIN(&LST_POSBIN)) +
VALUE(%BIN(&LST_POSBIN) + &LST_LEN)
GOTO CMDLBL(LST_LOOP)
LST_END: DLTUSRSPC USRSPC(&USP_LIB/&USP_NAME)
END: ENDPGM
Bookmarks