Submit a JCL thru Cobol - sysout=(INTRDR,*)
Moderators: Frank Yaeger, DikDude, Moderator Group
Submit a JCL thru Cobol - sysout=(INTRDR,*)
Hi,
Can anyone give the code for submitting a JCL thru Cobol program?
Can anyone give the code for submitting a JCL thru Cobol program?
Code for submitting jcl thru cobol
Hi,
Define a file in your cobol prog as below.
File-control.
Select file1 assign to dd1.
File section.
FD file1.
01 cobol-rec.
05 rec1 pic x(80).
procedure division.
para1.
Move '\\jobname job time,notify.....' to cobol-rec.
write cobol-rec.
move '\\step01 exec pgm=xxxx.....' to cobol-rec.
write cobol-rec.
Move '\\sample dd dsn=yyy.zzzzz...' to cobol-rec.
write cobol-rec.
After writing cobol program.
In JCL give dd1 as below.
//dd1 dd sysout=(INTRDR,*)
Pls try it and let me the know the result.
Regards,
Srinivas.
Define a file in your cobol prog as below.
File-control.
Select file1 assign to dd1.
File section.
FD file1.
01 cobol-rec.
05 rec1 pic x(80).
procedure division.
para1.
Move '\\jobname job time,notify.....' to cobol-rec.
write cobol-rec.
move '\\step01 exec pgm=xxxx.....' to cobol-rec.
write cobol-rec.
Move '\\sample dd dsn=yyy.zzzzz...' to cobol-rec.
write cobol-rec.
After writing cobol program.
In JCL give dd1 as below.
//dd1 dd sysout=(INTRDR,*)
Pls try it and let me the know the result.
Regards,
Srinivas.
Please do NOT do this.
It is bad for so many reasons, change control, audit, Operastions management, job re-runs...
Can't think of any reason why this is a good idea. In fact have worked at places where doing this would get you fired.
If you don't have a job scheduler - which is the preffered method then just jobchain to the previous step by putting a Gener to the interal reader as the last step.
Whay are you trying to link the jobs like this ?
It is bad for so many reasons, change control, audit, Operastions management, job re-runs...
Can't think of any reason why this is a good idea. In fact have worked at places where doing this would get you fired.
If you don't have a job scheduler - which is the preffered method then just jobchain to the previous step by putting a Gener to the interal reader as the last step.
Whay are you trying to link the jobs like this ?
submit job from a job
To give more clarity on submitting job from different job
Regards,
Krishna
admin - http://www.ibmmainframeguru.com
http://www.geocities.com/srcsinc
http://www.jacharya.com
Code: Select all
//**********************************************************************
//**************THIS IS A ROUTINE WHICH CALLS ANOTHER JCL ***
//**********************************************************************
//* STEP02 : RE-SUBMIT THE JCL //***************************************
//STEP02 EXEC PGM=IEBGENER
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=DXX.XXXX.XXXX.JCLLIB(AUTO),DISP=SHR
//SYSUT2 DD SYSOUT=(A,INTRDR)
//SYSIN DD DUMMY
//***********************************************************
Regards,
Krishna
admin - http://www.ibmmainframeguru.com
http://www.geocities.com/srcsinc
http://www.jacharya.com
-
- Moderator
- Posts: 1625
- Joined: Sat Aug 09, 2008 9:02 am
- Location: Mumbai, India
Okay - so where are we going now? What's the final approach to your problem, you've used?
Last edited by Anuj Dhawan on Thu Dec 30, 2010 1:04 pm, edited 1 time in total.
Regards,
Anuj
Anuj
-
- Moderator
- Posts: 1625
- Joined: Sat Aug 09, 2008 9:02 am
- Location: Mumbai, India
i done it in a easy way Anuj..
just used 2 cobol program.
1st one is for intrdr, in which i'm creating creating a jcl and,
2nd cobol...
my jcl is,
In the 1st cobol i'm just reading the record and passing that record using parm parameter to 2nd program.. here running the 2nd program and the ps creation are take place in 1st cobol itself..
my output file contain the report with the file name,
TSO*****.TRG.GURURT01
TSO*****.TRG.GURURT02
TSO*****.TRG.GURURT03
TSO*****.TRG.GURURT04
TSO*****.TRG.GURURT05
TSO*****.TRG.GURURT06
TSO*****.TRG.GURURT07
output look like..,
sorry for the english..
hope you may get something about what i did in this ( assignment for me in my company- (i am a trainee) )
thanks for your help:)
just used 2 cobol program.
1st one is for intrdr, in which i'm creating creating a jcl and,
Code: Select all
IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT JCLFILE ASSIGN TO JCLDD.
SELECT INFILE ASSIGN TO IN1.
DATA DIVISION.
FILE SECTION.
FD JCLFILE.
01 JCLREC.
05 FILLER PIC X(80).
FD INFILE.
01 INREC.
05 FILLER PIC X(80).
05 PARM4 PIC X VALUE "'".
01 DSN-ST.
05 DSN-ST1.
10 DSN1 PIC X(32) VALUE "//OUT1 DD DSN=TSOGKUM.TRG.GURURT".
10 DSN2 PIC 99 VALUE 0.
10 DSN3 PIC X VALUE ",".
05 DISP1 PIC X(8) VALUE 'DISP=SHR'.
PROCEDURE DIVISION.
0000-MAIN-PARA.
PERFORM 1000-INIT THRU 1000-EXIT.
PERFORM 2000-READ THRU 2000-EXIT UNTIL WS-EOF = 1.
PERFORM 9999-CLOSE.
WORKING-STORAGE SECTION.
01 WS-EOF PIC 9 VALUE 0.
01 NO-REC-READ PIC 99 VALUE ZERO.
01 NO-REC-WRITE PIC 99 VALUE ZERO.
01 PARM-ST.
05 PARM1 PIC X(24) VALUE '//STEP02 EXEC PGM=MAIN1,'.
05 PARM1 PIC X(07) VALUE '// '.
05 PARM2 PIC X(6) VALUE "PARM='".
05 PARM3 PIC X(49).
PERFORM 9999-CLOSE.
DISPLAY NO-REC-READ.
DISPLAY NO-REC-WRITE.
GOBACK.
1000-INIT.
OPEN OUTPUT JCLFILE INPUT INFILE.
1000-EXIT.
EXIT.
2000-READ.
READ INFILE
AT END MOVE 1 TO WS-EOF
NOT AT END
ADD 1 TO NO-REC-READ
PERFORM 3000-JCL THRU 3000-EXIT.
2000-EXIT.
EXIT.
3000-JCL.
DISPLAY PARM-ST.
ADD 1 TO DSN2.
ADD 1 TO DSN2.
MOVE '//TSOGKUM JOB CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID' TO
JCLREC.
WRITE JCLREC.
MOVE '//STEP01 EXEC PGM=IEFBR14' TO JCLREC.
WRITE JCLREC.
MOVE '//DD1 DD DSN=TSOGKUM.TRG.TESTG3,' TO JCLREC.
WRITE JCLREC FROM DSN-ST1.
MOVE '// DISP=(MOD,CATLG,UNCATLG),' TO JCLREC.
WRITE JCLREC.
MOVE '// SPACE=(TRK,(2,2)),UNIT=SYSDA,' TO JCLREC.
WRITE JCLREC.
MOVE '// DCB=(LRECL=80,RECFM=FB,DSORG=PS)' TO JCLREC.
WRITE JCLREC.
MOVE '//SYSIN DD *' TO JCLREC.
WRITE JCLREC.
MOVE '//STEP02 EXEC PGM=GURU1,' TO JCLREC.
WRITE JCLREC.
MOVE INREC TO PARM3.
MOVE INREC TO PARM3.
WRITE JCLREC FROM PARM-ST.
MOVE '//STEPLIB DD DSN=ENDEVOR.DEV1.LOAD,DISP=SHR' TO
JCLREC.
WRITE JCLREC.
WRITE JCLREC FROM DSN-ST.
MOVE '//SYSPRINT DD SYSOUT=*' TO JCLREC.
WRITE JCLREC.
MOVE '//SYSIN DD *' TO JCLREC.
WRITE JCLREC.
MOVE '//' TO JCLREC.
WRITE JCLREC.
3000-EXIT.
EXIT.
9999-CLOSE.
CLOSE JCLFILE.
2nd cobol...
Code: Select all
IDENTIFICATION DIVISION.
PROGRAM-ID. GURU1.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OUTFILE ASSIGN TO OUT1.
DATA DIVISION.
FILE SECTION.
FD OUTFILE.
01 OUTREC.
05 OUT-MNO PIC 9(10).
05 FILLER PIC X(3).
05 OUT-UNITC PIC Z(6).
05 FILLER PIC X(3).
05 OUT-RATE PIC Z.ZZ.
05 FILLER PIC X(3).
05 OUT-GOVDUTY PIC 9(2).
05 FILLER PIC X(7).
05 OUT-FUEL PIC Z9.9.
05 FILLER PIC X(5).
05 OUT-REBATE PIC Z(2).ZZ.
05 FILLER PIC X(4).
05 OUT-PAYABLE PIC Z(4).ZZ.
05 F PIC X(17).
WORKING-STORAGE SECTION.
01 WS-USED PIC 9(5) VALUE ZEROS.
01 WS-UNITCONS PIC 9(6)V99.
01 WS-AMOUNT PIC 9(6)V99.
01 NO-REC-READ PIC 99 VALUE ZEROS.
01 NO-REC-WRITE PIC 99 VALUE ZEROS.
01 WS-STATUS PIC 9 VALUE 0.
01 WS-FUEL PIC 999 VALUE 0.
88 FUEL-50 VALUES 1 THRU 50.
88 FUEL-100 VALUES 51 THRU 100.
88 FUEL-150 VALUES 101 THRU 150.
88 FUEL-200 VALUES 101 THRU 850.
01 OUT-FUEL1 PIC 99V9.
01 WS-PAY PIC 999 VALUE 0.
88 PAY-100 VALUES 1 THRU 100.
88 PAY-200 VALUES 101 THRU 200.
88 PAY-201 VALUES 201 THRU 500.
01 GOVT-VAR PIC 99.
01 FUEL-VAR PIC 99V9.
01 DEDUCT-VAR PIC 9.
01 OUT-REBATE1 PIC 9(2)V99.
01 OUT-RATE1 PIC 9V99.
01 WS-SPACES PIC X(80) VALUE ALL SPACES.
01 ST1.
05 FILLER PIC X(20).
05 ST11 PIC X(30) VALUE 'MONTHLY CONSUMPTION BILL'.
05 ST1DAT PIC X(10) VALUE 'DATED ON:'.
05 ST1DATE PIC 9(8).
05 FILLER PIC X(12).
01 ST2.
05 ST22 PIC X(80) VALUE ALL '-'.
01 ST3.
05 ST31 PIC X(30) VALUE 'CONSUMER CONSUMPTION RATE GOV'.
05 ST32 PIC X(35) VALUE ' DUTY FUEL REBATE PAYABLE'.
05 FILLER PIC X(15).
01 ST4.
05 ST41 PIC X(30) VALUE ' CODE UNITS '.
05 ST42 PIC X(35) VALUE ' CHARGES AMOUNT'.
05 FILLER PIC X(15).
01 ST5.
05 ST51 PIC X(16) VALUE 'CUSTOMER NAME : '.
05 ST5NAME PIC X(20).
05 FILLER PIC X(44).
LINKAGE SECTION.
01 INREC.
05 MNO PIC 9(12).
05 CNAME PIC X(20).
05 PRR PIC 9(6).
05 PAR PIC 9(6).
05 DAT PIC 9(6).
05 CCODE PIC 9(1).
05 F PIC X(31).
PROCEDURE DIVISION USING INREC.
0000-MAIN-PARA.
PERFORM 1000-INIT THRU 1000-EXIT.
PERFORM 2000-READ THRU 2000-EXIT.
ACCEPT ST1DATE FROM DATE.
DISPLAY NO-REC-READ.
DISPLAY NO-REC-WRITE.
GOBACK.
1000-INIT.
OPEN OUTPUT OUTFILE.
MOVE SPACES TO OUTREC.
1000-EXIT.
EXIT.
2000-READ.
MOVE CNAME TO ST5NAME.
ACCEPT ST1DATE FROM DATE.
WRITE OUTREC FROM ST1.
WRITE OUTREC FROM ST2.
WRITE OUTREC FROM ST3.
WRITE OUTREC FROM ST4.
WRITE OUTREC FROM ST2.
WRITE OUTREC FROM ST5.
PERFORM 3000-WRITE THRU 3000-EXIT
PERFORM 3300-WRITE THRU 3300-EXIT.
2000-EXIT.
EXIT.
3000-WRITE.
COMPUTE WS-USED = PRR - PAR.
MOVE WS-USED TO OUT-UNITC
EVALUATE TRUE
WHEN CCODE = 1
MOVE 1.5 TO OUT-RATE1
WHEN CCODE = 2
MOVE 1.75 TO OUT-RATE1
WHEN CCODE = 3
MOVE 1.25 TO OUT-RATE1
WHEN CCODE = 4
MOVE 1 TO OUT-RATE1
END-EVALUATE.
PERFORM 1100-UNIT-PARA THRU 1100-UNIT-EXIT.
GOVT-DUTY-PARA.
IF WS-UNITCONS < 100
EVALUATE TRUE
WHEN CCODE = 4
MOVE 0 TO OUT-GOVDUTY
WHEN CCODE = 1
MOVE 10 TO OUT-GOVDUTY
WHEN CCODE = 2
MOVE 15 TO OUT-GOVDUTY
WHEN CCODE = 3
MOVE 8 TO OUT-GOVDUTY
END-EVALUATE
ELSE
EVALUATE TRUE
WHEN CCODE = 4
MOVE 0 TO OUT-GOVDUTY
WHEN CCODE = 1
MOVE 15 TO OUT-GOVDUTY
WHEN CCODE = 2
MOVE 22 TO OUT-GOVDUTY
WHEN CCODE = 3
MOVE 12 TO OUT-GOVDUTY
END-EVALUATE
END-IF.
COMPUTE WS-AMOUNT = WS-UNITCONS + OUT-GOVDUTY.
FUEL-PARA.
MOVE WS-UNITCONS TO WS-FUEL.
EVALUATE TRUE
WHEN FUEL-50
EVALUATE TRUE
WHEN CCODE = 4
MOVE 0 TO OUT-FUEL1
WHEN CCODE = 1
MOVE 2 TO OUT-FUEL1
WHEN CCODE = 2
MOVE 4 TO OUT-FUEL1
WHEN CCODE = 3
MOVE 1 TO OUT-FUEL1
END-EVALUATE
WHEN FUEL-100
EVALUATE TRUE
WHEN CCODE = 4
MOVE 0 TO OUT-FUEL1
WHEN CCODE = 1
MOVE 3 TO OUT-FUEL1
WHEN CCODE = 2
MOVE 6 TO OUT-FUEL1
WHEN CCODE = 3
MOVE 1.5 TO OUT-FUEL1
END-EVALUATE
WHEN FUEL-150
EVALUATE TRUE
WHEN CCODE = 4
MOVE 0 TO OUT-FUEL1
WHEN CCODE = 1
MOVE 4 TO OUT-FUEL1
WHEN CCODE = 2
MOVE 8 TO OUT-FUEL1
WHEN CCODE = 3
MOVE 2 TO OUT-FUEL1
END-EVALUATE
WHEN FUEL-200
EVALUATE TRUE
WHEN CCODE = 4
MOVE 0 TO OUT-FUEL1
WHEN CCODE = 1
MOVE 6 TO OUT-FUEL1
WHEN CCODE = 2
MOVE 10 TO OUT-FUEL1
WHEN CCODE = 3
MOVE 3 TO OUT-FUEL1
END-EVALUATE
END-EVALUATE.
COMPUTE WS-AMOUNT = WS-AMOUNT + OUT-FUEL1.
MOVE OUT-FUEL1 TO OUT-FUEL.
PAYABLE-AMOUNT.
MOVE WS-UNITCONS TO WS-PAY.
EVALUATE TRUE
WHEN PAY-100
EVALUATE TRUE
WHEN CCODE = 4
MOVE 5 TO DEDUCT-VAR
WHEN CCODE = 1
MOVE 7 TO DEDUCT-VAR
WHEN CCODE = 2
MOVE 4 TO DEDUCT-VAR
WHEN CCODE = 3
MOVE 4 TO DEDUCT-VAR
END-EVALUATE
WHEN PAY-200
EVALUATE TRUE
WHEN CCODE = 4
MOVE 5 TO DEDUCT-VAR
WHEN CCODE = 1
MOVE 6 TO DEDUCT-VAR
WHEN CCODE = 2
MOVE 4 TO DEDUCT-VAR
WHEN CCODE = 3
MOVE 4 TO DEDUCT-VAR
END-EVALUATE
WHEN PAY-201
EVALUATE TRUE
WHEN CCODE = 4
MOVE 6 TO DEDUCT-VAR
WHEN CCODE = 1
MOVE 5 TO DEDUCT-VAR
WHEN CCODE = 2
MOVE 3 TO DEDUCT-VAR
WHEN CCODE = 3
MOVE 3 TO DEDUCT-VAR
END-EVALUATE
END-EVALUATE.
PERFORM 3100-REBATE-PARA THRU 3100-REBATE-EXIT
ADD 1 TO NO-REC-WRITE.
3000-EXIT.
EXIT.
1100-UNIT-PARA.
MOVE OUT-RATE1 TO OUT-RATE.
COMPUTE WS-UNITCONS = WS-USED * OUT-RATE1.
1100-UNIT-EXIT.
EXIT.
3100-REBATE-PARA.
COMPUTE OUT-REBATE1 = (WS-AMOUNT / 100) * DEDUCT-VAR.
MOVE OUT-REBATE1 TO OUT-REBATE.
SUBTRACT OUT-REBATE1 FROM WS-AMOUNT.
MOVE WS-AMOUNT TO OUT-PAYABLE.
3100-REBATE-EXIT.
EXIT.
3300-WRITE.
MOVE MNO TO OUT-MNO.
WRITE OUTREC.
WRITE OUTREC FROM ST2.
WRITE OUTREC FROM ST2.
3300-EXIT.
EXIT.
9999-CLOSE-PARA.
CLOSE OUTFILE.
Code: Select all
//TSO**** JOB (),'GURU',CLASS=A,MSGCLASS=X,
// MSGLEVEL=(1,1),NOTIFY=&SYSUID,PRTY=15
//STEP01 EXEC PGM=main1
//STEPLIB DD DSN=ENDEVOR.DEV1.LOAD,DISP=SHR
//IN1 DD DSN=TSO***.TRG.ASGN6IN,DISP=SHR
//JCLDD DD SYSOUT=(*,INTRDR)
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
//SYSOUT DD SYSOUT=*
//
my output file contain the report with the file name,
TSO*****.TRG.GURURT01
TSO*****.TRG.GURURT02
TSO*****.TRG.GURURT03
TSO*****.TRG.GURURT04
TSO*****.TRG.GURURT05
TSO*****.TRG.GURURT06
TSO*****.TRG.GURURT07
output look like..,
Code: Select all
MONTHLY CONSUMPTION BILL DATED ON: 00101230
------------------------------------------------------------------------
CONSUMER CONSUMPTION RATE GOV DUTY FUEL REBATE PAYABLE
CODE UNITS CHARGES AMOUNT
------------------------------------------------------------------------
CUSTOMER NAME : gurumoorthy
1029389391 18 1.50 10 2.0 2.73 36.27
------------------------------------------------------------------------
------------------------------------------------------------------------
hope you may get something about what i did in this ( assignment for me in my company- (i am a trainee) )
thanks for your help:)
Last edited by Gurugars on Tue Jul 12, 2011 2:03 pm, edited 1 time in total.
Guru:-)
You're never fully dressed without a smile
You're never fully dressed without a smile
-
- Moderator
- Posts: 1625
- Joined: Sat Aug 09, 2008 9:02 am
- Location: Mumbai, India
FREE TUTORIALS
Tutorials
Free tutorials from mainframegurukul
- JCL Tutorial
Covers all important JCL concepts. - Cobol Tutorial
This tutorials covers all Cobol Topics from STRING to COMP-3. - DB2 Tutorial
DB2 Tutorial focuses on DB2 COBOL Programming. - SORT Tutorial
This Tutorial covers all important aspects of DFSORT with examples - CICS Tutorial
This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions
- Cobol Interview Questions
50+ Interview Questions - JCL Interview Questions
50+ Interview Questions - DB2 Interview Questions
100+ Interview Questions - CICS Interview Questions
70+ Interview Questions - VSAM Interview Questions
27 Interview Questions
Other References
Mainframe Tools and others
- XPEDITER Reference
Explains how we can debug a program - FILEAID Reference
Explains how to browse , edit and delete datasets - Change Man Reference
Quick Start tutorial on Changeman - Abend Reference
Important Abend codes explained - FaceBook Page
MainframeGurukul FaceBook Page - LinkedIn Page
MainframeGurkul Linkedin Page