Submit a JCL thru Cobol - sysout=(INTRDR,*)

In this Mainframe Forum - You can post your queries on JCL, OS/390 JCL, MVS JCL, z/OS JCL, JES2 & JES3

Moderators: Frank Yaeger, DikDude, Moderator Group

Post Reply
Sarthak

Submit a JCL thru Cobol - sysout=(INTRDR,*)

Post by Sarthak » Sat Feb 25, 2006 4:54 pm

Hi,

Can anyone give the code for submitting a JCL thru Cobol program?

srinivas
Member
Posts: 9
Joined: Wed Feb 08, 2006 2:58 pm
Location: Bangalore

Code for submitting jcl thru cobol

Post by srinivas » Tue May 30, 2006 2:46 pm

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.

Juan
Member
Posts: 9
Joined: Thu Jun 29, 2006 3:48 pm

Post by Juan » Thu Jun 29, 2006 4:01 pm

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 ?

User avatar
Krishna
Site Admin
Posts: 1052
Joined: Fri Jan 27, 2006 7:50 am

submit job from a job

Post by Krishna » Thu Dec 21, 2006 3:00 pm

To give more clarity on submitting job from different job

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

User avatar
Gurugars
Active Member
Posts: 107
Joined: Sat Oct 23, 2010 2:17 pm
Location: Chennai,India.

Post by Gurugars » Fri Dec 10, 2010 11:19 pm

hello friends,
is it possible to run the same jcl multiple times from my cobol. say my jcl to be submitted via cobol is a ps creating job.. can i run it multiple times to create multiple ps files..


please suggest me..
thanks in advance..
Guru:-)

You're never fully dressed without a smile :)

MrSpock
Active Member
Posts: 273
Joined: Wed Jun 27, 2007 5:37 pm

Post by MrSpock » Fri Dec 10, 2010 11:24 pm

Yes, of course. But why not just allocate datasets using a dynamic allocation routine? What's to be gained doing it this way?

User avatar
Gurugars
Active Member
Posts: 107
Joined: Sat Oct 23, 2010 2:17 pm
Location: Chennai,India.

Post by Gurugars » Fri Dec 10, 2010 11:49 pm

actually MrSpock, i would like to prepare reports in ps datasets. for that i need to allocate a ps dataset in each routine and load it with my data.. is it possible?

if so please let me know the codings.
Guru:-)

You're never fully dressed without a smile :)

User avatar
Gurugars
Active Member
Posts: 107
Joined: Sat Oct 23, 2010 2:17 pm
Location: Chennai,India.

Post by Gurugars » Fri Dec 17, 2010 12:03 pm

thanks:-)
Guru:-)

You're never fully dressed without a smile :)

Anuj Dhawan
Moderator
Posts: 1625
Joined: Sat Aug 09, 2008 9:02 am
Location: Mumbai, India

Post by Anuj Dhawan » Tue Dec 28, 2010 3:03 pm

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

User avatar
Gurugars
Active Member
Posts: 107
Joined: Sat Oct 23, 2010 2:17 pm
Location: Chennai,India.

Post by Gurugars » Wed Dec 29, 2010 5:34 pm

Hi Anuj,
sorry i can't get you. whether you are asking about how i had used intrdr or about that 'running a jcl multiple times'?


sorry for the english..
Guru:-)

You're never fully dressed without a smile :)

Anuj Dhawan
Moderator
Posts: 1625
Joined: Sat Aug 09, 2008 9:02 am
Location: Mumbai, India

Post by Anuj Dhawan » Thu Dec 30, 2010 1:06 pm

I'm asking about both the things (intrdr and 'running a jcl multiple times') acutally - I mean, how have you solved your problem?
Regards,
Anuj

User avatar
Gurugars
Active Member
Posts: 107
Joined: Sat Oct 23, 2010 2:17 pm
Location: Chennai,India.

Post by Gurugars » Thu Dec 30, 2010 3:59 pm

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,


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 = &#40;WS-AMOUNT / 100&#41; * 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.
my jcl is,

Code: Select all

//TSO**** JOB &#40;&#41;,'GURU',CLASS=A,MSGCLASS=X,
//         MSGLEVEL=&#40;1,1&#41;,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=&#40;*,INTRDR&#41;
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
//SYSOUT DD SYSOUT=*
//


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..,

Code: Select all

        MONTHLY CONSUMPTION BILL      DATED ON&#58; 00101230
------------------------------------------------------------------------
CONSUMER CONSUMPTION RATE  GOV DUTY    FUEL   REBATE   PAYABLE   
  CODE       UNITS                    CHARGES          AMOUNT  
------------------------------------------------------------------------
CUSTOMER NAME &#58; gurumoorthy        
1029389391       18   1.50   10        2.0      2.73      36.27 
------------------------------------------------------------------------
------------------------------------------------------------------------


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) ) :idea:

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 :)

Anuj Dhawan
Moderator
Posts: 1625
Joined: Sat Aug 09, 2008 9:02 am
Location: Mumbai, India

Post by Anuj Dhawan » Fri Dec 31, 2010 1:56 pm

Thanks for posting the solution, it might help someone later...:)
Regards,
Anuj

academyindia4

Topic deleted by Admin

Post by academyindia4 » Mon Feb 01, 2016 1:31 am

<< Content deleted By Admin >>

Post Reply

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



Other References
Mainframe Tools and others