Figure 1 shows a list of the fields that are most
involved in job validation. Following the list are some examples of
code showing the use of the fields.
Figure 1. Fields
Used in Job ValidationJVW fields to be used by a user-written validation/restart
routine.
Field Size Purpose
--------------------------------------------------------------
JVWWORKD 8 bytes Doubleword work area that can
be used as a temporary save area
or as a conversion work area
JVWCONVD 8 bytes Doubleword work area that can
be used as a temporary save area
or as a conversion work area
JVWWORK 4 bytes Fullword work area that can be
used as a temporary save area
or as a conversion work area
JVWJOBNM 8 bytes The job name
JVWJOBID 8 bytes The job identifier
JVWJCT 4 bytes The address of the job's JCT
JVWSTA1- 1 byte each Job status indicators
JVWSTA8
JVWWKFDB 12 bytes A work FDB - to be used to
read in a spool control block
JVWCHFDB 12 bytes A work FDB - to be used as a
save area to the next FDB of
a chain of FDBs
JVWVFDB 16 bytes The list form of the IATXVFDB macro
that may be used with the execute
form of the IATXVFDB or IATXVSRV
macros
JVWWTO 124 bytes The list form of the WTO macro
that may be used with the IATXVSRE
and IATXVMSG macros
THE FOLLOWING CODE SAMPLE SHOWS THE USES OF SOME FIELDS:
L R7,JVDJVWAD ADDRESS THE JOB'S JVW
USING JVWSTART,R7
*
* THE FDB FOR MY CONTROL BLOCK (MYCB) IS IN THE JCT.
*
L R3,JVWJCT ADDRESS of THE JCT
USING JCTSTART,R3
MVC JVWWKFDB,JCTMYFDB COPY THE FDB
DROP R3 RELEASE REGISTER 3
*
* VALIDATE THE FDB
*
IATXVFDB FDB=JVWWKFDB, VALIDATE THE FDB
ID=MYCB, - CONTROL BLOCK ID
ROOT=JVWJCFDB, - ROOT FDB IS THE JCT
DESC=DESCRIP, - CONTROL BLOCK DESCRIPTOR
ERROR=OUT, - ERROR RETURN
NAVAIL=OUT, - UNAVAIL RETURN
MF=(E,JVWVFDB) - EXECUTE FORM
*
* READ THE CONTROL BLOCK INTO STORAGE
*
JESREAD FDB=JVWWKFDB, READ THE CONTROL BLOCK
ID=MYCB, - CONTROL BLOCK ID
ERROR=ERRMYCB - ERROR RETURN
L R2,JVWWKFDB GET THE CONTROL BLOCK ADDRESS
USING MYCBSTRT,R2
*
* VALIDATION OF PARTICULAR FIELDS WITH MYCB IS DONE HERE.
*
.
.
add code here to validate MYCB fields
.
.
*
* IF MYCB IS UPDATED, THEN WRITE MYCB BACK TO SPOOL
*
label1 DS 0H
AWRITE FDB=JVWWKFDB, - WRITE THE CB TO SPOOL
ID=MYCB, - CONTROL BLOCK ID
ERROR=ERRMYCB - ERROR RETURN
B OUT LEAVE
*
* RELEASE THE FDB
*
label2 DS 0H
DROP R2 RELEASE REGISTER 2
ARELEASE FDB=JVWWKFDB RELEASE THE SPOOL BUFFER
B OUT LEAVE
*
* IF ERRORS
*
ERRMYCB DS 0H
TM JVWWKFDB+FDBSPFL1-FDBSTART,FDBONSP CB ON SPOOL?
BC ALLON,SKIP BIY
ARELEASE FDB=JVWWKFDB RELEASE THE SPOOL BUFFER
*
* COPY THE MESSAGE INTO THE WTO WORK AREA AND ISSUE IATXVSRE
*
SKIP DS 0H
XC JVWWTO(JVWWTOL),JVWWTO CLEAR THE WTO AREA
MVC JVWWTO(DSP001L),DSP001 COPY MODEL MESSAGE
IATXVSRE JVWWTO, MARK THE JOB FOR DELETION
FDB=JVWWKFDB - FDB IN ERROR
B OUT LEAVE
DROP R7
*
* RETURN TO THE CALLER
*
OUT DS 0H
ARETURN ,
*
* CONSTANTS AND LIST FORM OF WTO'S
*
DESCRIP DC CL(SRVDESCL)'MY CONTROL BLOCK'
DSP001 WTO 'MY CONTROL BLOCK (MYCB) FAILED A JESREAD',
MF=L
DSP001L EQU *-DSP001