|
|
| Author |
Message |
batusai
New User
Joined: 21 Aug 2008 Posts: 14 Location: lima peru
|
|
|
|
hello I am not speaking ingles very much, but I have one problem with my program cobol batch and jcl, please help me thanks
-I have one zos 1.6 with ispf
-I create two datasets
1.- to cobol
2.- to my jcl
this is the first dataset for cobol
this is my probram cobol
| Code: |
IDENTIFICATION DIVISION.
PROGRAM-ID. TAND3997.
*AUTHOR. BCION.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WE-SALUDO PIC X(15) VALUE 'HELLO WORLD....'.
PROCEDURE DIVISION.
*------------------*
DISPLAY '...HOLA MUNDO.....'.
DISPLAY WE-SALUDO.
DISPLAY WE-SALUDO '...HOLA MUNDO.....'
STOP RUN. |
now I am compile the program
and this the result
| Code: |
PP 5655-G53 IBM Enterprise COBOL for z/OS 3.3.1 Date 08
ZWB
PP 5655-G53 IBM Enterprise COBOL for z/OS 3.3.1 TAND3997 Date 08
LineID PL SL ----+-*A-1-B--+----2----+----3----+----4----+----5----+----6---
/* TAND3997
000001 000100 IDENTIFICATION DIVISION.
000002 000200 PROGRAM-ID. TAND3997.
000003 000300*AUTHOR. BCION.
000004 000400 ENVIRONMENT DIVISION.
000005 000500 DATA DIVISION.
000006 000600 WORKING-STORAGE SECTION.
000007 000700 01 WE-SALUDO PIC X(15) VALUE 'HELLO WORLD....'.
000008 000800 PROCEDURE DIVISION.
000009 000900*------------------*
000010 001200 DISPLAY '...HOLA MUNDO.....'.
000011 001400 DISPLAY WE-SALUDO.
000012 001500 DISPLAY WE-SALUDO '...HOLA MUNDO.....'
000013 001600 STOP RUN.
*/ TAND3997
PP 5655-G53 IBM Enterprise COBOL for z/OS 3.3.1 TAND3997 Date 08
An "M" preceding a data-name reference indicates that the data-name is modified
Defined Cross-reference of data names References
7 WE-SALUDO. . . . . . . . . . . 11 12
PP 5655-G53 IBM Enterprise COBOL for z/OS 3.3.1 TAND3997 Date 08
Defined Cross-reference of programs References
2 TAND3997
* Statistics for COBOL program TAND3997:
* Source records = 13
* Data Division statements = 1
* Procedure Division statements = 4
End of compilation 1, program TAND3997, no statements flagged.
Return code 0
******************************** Bottom of Data ******************************** |
good when I compile the probrama x 1.6 limits me creates a dataset where the compiled program is called
USERID.CLASS.OBJ
so this is my program jcl in my dataset
userid.class.cntl
| Code: |
//OSW1 JOB (034D),'OSW',CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A
//JOBLIB DD DSN=USERID.CLASS.OBJ,DISP=SHR
//TAND3997 EXEC PGM=TAND3997
//OUT1 OUTPUT OUTDISP=(KEEP,KEEP)
//SYSPRINT DD SYSOUT=*,OUTPUT=*.OUT1
//SYSDBOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
/* |
as well as run with this JCL and sends me the same mistake
| Code: |
//OSW1 JOB (034D),'OSW',CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A
//JOBLIB DD DSN=USERID.CLASS.OBJ,DISP=SHR
//STEP1 EXEC PGM=TAND3997
//OUT1 OUTPUT OUTDISP=(KEEP,KEEP)
//SYSPRINT DD SYSOUT=*,OUTPUT=*.OUT1
//SYSDBOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
/*
|
when I run submit the limits notified me this error
in the sdsf - status jobs
| Code: |
00.35.11 JOB00034 $HASP373 OSW1 STARTED - INIT 1 - CLASS A - SYS SYS1
00.35.11 JOB00034 IEF403I OSW1 - STARTED - TIME=00.35.11
00.35.11 JOB00034 IEW4007I FIND FOR MODULE TAND3997 FAILED BECAUSE DIRECTORY ENTRY IS NOT VALID FOR A LOAD MODULE.
00.35.11 JOB00034 CSV003I REQUESTED MODULE TAND3997 NOT FOUND
00.35.11 JOB00034 CSV028I ABEND806-04 JOBNAME=OSW1 STEPNAME=TAND3997
00.35.11 JOB00034 IEA995I SYMPTOM DUMP OUTPUT 581
581 SYSTEM COMPLETION CODE=806 REASON CODE=00000004
581 TIME=00.35.11 SEQ=00012 CPU=0000 ASID=0017
581 PSW AT TIME OF ERROR 070C1000 812C010E ILC 2 INTC 0D
581 NO ACTIVE MODULE FOUND
581 NAME=UNKNOWN
581 DATA AT PSW 012C0108 - 9024181E 0A0D18FB 180C181D |
and
| Code: |
IEF236I ALLOC. FOR OSW1 TAND3997
IEF237I 0A82 ALLOCATED TO JOBLIB
IEF237I JES2 ALLOCATED TO SYSPRINT
IEF237I JES2 ALLOCATED TO SYSDBOUT
IEF237I JES2 ALLOCATED TO SYSOUT
IEW4007I FIND FOR MODULE TAND3997 FAILED BECAUSE DIRECTORY ENTRY IS NOT VALID FOR A LOAD MODULE.
CSV003I REQUESTED MODULE TAND3997 NOT FOUND
CSV028I ABEND806-04 JOBNAME=OSW1 STEPNAME=TAND3997
IEA995I SYMPTOM DUMP OUTPUT
SYSTEM COMPLETION CODE=806 REASON CODE=00000004
TIME=00.35.11 SEQ=00012 CPU=0000 ASID=0017
PSW AT TIME OF ERROR 070C1000 812C010E ILC 2 INTC 0D
NO ACTIVE MODULE FOUND
NAME=UNKNOWN
DATA AT PSW 012C0108 - 9024181E 0A0D18FB 180C181D |
|
|
| Back to top |
|
 |
References
|
|
 |
Aaru
Senior Member
Joined: 03 Jul 2007 Posts: 1136 Location: Mumbai - India
|
|
|
|
Batusai,
From what i understood, you have written a COBOL program and has compiled and tried to run the program.
You had created an object module for your program which is in USERID.CLASS.OBJ .
Then you try to run the program using a RUN jcl but finding problems. Am i right?
My observations:
In your RUN JCL you had given the OBJ across the JOBLIB DD which is not correct. You will have to first LINK-EDIT your OBJ and create a LOAD module which should then be used in the RUN JCL across the JOBLIB/STEPLIB DD.
There are many LINK JCL's available (IEWL etc ). |
|
| Back to top |
|
 |
batusai
New User
Joined: 21 Aug 2008 Posts: 14 Location: lima peru
|
|
|
|
thanks for you response.
and
| Quote: |
You had created an object module for your program which is in USERID.CLASS.OBJ .
Then you try to run the program using a RUN jcl but finding problems. Am i right?
|
this is true.
I thought that compiling the program
that was my library
| Code: |
//OSW1 JOB (034D),'OSW',CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A
//JOBLIB DD DSN=USERID.CLASS.OBJ,DISP=SHR
//STEP1 EXEC PGM=TAND3997
//OUT1 OUTPUT OUTDISP=(KEEP,KEEP)
//SYSPRINT DD SYSOUT=*,OUTPUT=*.OUT1
//SYSDBOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
/* |
but
| Quote: |
You will have to first LINK-EDIT your OBJ and create a LOAD module which should then be used in the RUN JCL across the JOBLIB/STEPLIB DD.
There are many LINK JCL's available (IEWL etc ). |
I not how create a LOAD module
please ayudame to create my Load module with the link-edit  |
|
| Back to top |
|
 |
Aaru
Senior Member
Joined: 03 Jul 2007 Posts: 1136 Location: Mumbai - India
|
|
|
|
Batusai,
| Quote: |
I not how create a LOAD module
please ayudame to create my Load module with the link-edit |
Please take a look at the LINK JCL's available as a sticky in the JCL forum.
Also Check the step LKED in the below link
LINK JCL
You can find other JCL's in the below link
JCL
Also check if there are any LINK Jcl's available in your shop. Speak to your peers for a LINK JCL. |
|
| Back to top |
|
 |
Anuj D.
Global Moderator
Joined: 22 Apr 2006 Posts: 2158 Location: Phoenix, AZ
|
|
|
|
Hi,
Couple of things...
1. Here in this JCL:
| Code: |
//OSW1 JOB (034D),'OSW',CLASS=A,MSGLEVEL=(1,1),MSGCLASS=A
//JOBLIB DD DSN=USERID.CLASS.OBJ,DISP=SHR
//STEP1 EXEC PGM=TAND3997
//OUT1 OUTPUT OUTDISP=(KEEP,KEEP)
//SYSPRINT DD SYSOUT=*,OUTPUT=*.OUT1
//SYSDBOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
/* |
when you code
| Code: |
| //STEP1 EXEC PGM=TAND3997 |
You are supposed to provide the "path" for the "load module" of the program. This is usually provided by STEPLIB; when system encounters the statement
| Code: |
| //STEP1 EXEC PGM=TAND3997 |
OS tries to find the load module for your program TAND3997 & for this is why it is needed to provide the Library (PDS) path for the program's load module. If you dont provide this JCL will typically abend with S806- which means Load Module not found, & this is visible in Your SYSOYT (SDSF) -
| Code: |
| SYSTEM COMPLETION CODE=806 REASON CODE=00000004 |
2. When you say..
| Quote: |
| now I am compile the program |
How do you do it- using some vsersion control tool such Change Man, or the way Aaru mentioned. Usually these days sites make use of vsersion control tools.
And if you are using vsersion control tools then
| Quote: |
| I not how create a LOAD module |
load modules are "saved" in "predefined" PDSs.
BTW, there sould be some other program, written by some one else, in working condition at your shop- please check the JCL for that program, will give you a better insighs about such things.. |
|
| Back to top |
|
 |
batusai
New User
Joined: 21 Aug 2008 Posts: 14 Location: lima peru
|
|
|
|
hello thaks for your response
Aaru,Anuj D.
I write this code for lked my program obj to load module but return this error
| Code: |
//LKED EXEC PGM=IEWL,PARM='LIST,XREF,LET,MAP',COND=(5,LT,COBOL),
// REGION=512K
//SYSLIN DD DSNAME=USERID.CLASS.OBJ,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
//SYSLMOD DD DSNAME=USERID.CLASS.LOAD(TAND3997),DISP=(,PASS),
// UNIT=SYSDA,SPACE=(CYL,(1,1,1))
//SYSUDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
/*
|
error :
| Code: |
------------------------------------------
2 IEFC621I EXPECTED CONTINUATION NOT RECEIVED
3 IEFC605I UNIDENTIFIED OPERATION FIELD
6 IEFC621I EXPECTED CONTINUATION NOT RECEIVED
7 IEFC605I UNIDENTIFIED OPERATION FIELD
------------------------------------------
|
10.22.15 JOB00045 $HASP165 BATUSAIL ENDED AT N1 - JCL ERROR CN(INTERNAL)
IKJ56250I JOB IBMUSERL(JOB00045) SUBMITTED
IKJ56254I USERID PLUS JOBNAME CHARACTERS CANNOT EXCEED MAXIMUM JOBNAME LENGTH OF
F EIGHT
***
THANKS FOUR YOUR HELP |
|
| Back to top |
|
 |
Anuj D.
Global Moderator
Joined: 22 Apr 2006 Posts: 2158 Location: Phoenix, AZ
|
|
|
|
Hi,
I can see many errors -
| Quote: |
JOBNAME CHARACTERS CANNOT EXCEED MAXIMUM JOBNAME LENGTH OF
F EIGHT |
1.You have not shown the JOB card for the JOB, it has a wrong JOB name, make it max. of 8 characters.
2. I don't underrstnd this DD statement..
This is not a valid DD name.
3. Again, did you try looking some other JCL available at your end..? |
|
| Back to top |
|
 |
Robert Sample
Senior Member
Joined: 06 Jun 2008 Posts: 891 Location: Atlanta, GA
|
|
|
|
Anuj: DDNAME=SYSIN is perfectly valid. It indicates that the statement is to be resolved by referencing the SYSIN DD statement. It's used -- a lot -- in IBM compile procedures.
batusai: your continuation lines are starting too far into the line. Line up the R of REGION=512K with the first E of the EXEC statement before it. Line up the U of UNIT= with the first D of the DD statement above it. This is why all 4 errors occurred -- you ended two statements with commas but there was no continuation by column 16 of the following line. |
|
| Back to top |
|
 |
Anuj D.
Global Moderator
Joined: 22 Apr 2006 Posts: 2158 Location: Phoenix, AZ
|
|
|
|
Hi Robet,
Thanks...
| Robert Sample wrote: |
| Anuj: DDNAME=SYSIN is perfectly valid. It indicates that the statement is to be resolved by referencing the SYSIN DD statement. It's used -- a lot -- in IBM compile procedures. |
Aaargh...me poor guy..hmm..this is one of the ill effect of using Version Contoller tools..  |
|
| Back to top |
|
 |
batusai
New User
Joined: 21 Aug 2008 Posts: 14 Location: lima peru
|
|
| Back to top |
|
 |
Robert Sample
Senior Member
Joined: 06 Jun 2008 Posts: 891 Location: Atlanta, GA
|
|
|
|
| Code: |
//LKED EXEC PGM=IEWL,PARM='LIST,XREF,LET,MAP',COND=(5,LT,COBOL),
// REGION=512K
//SYSLIN DD DSNAME=USERID.CLASS.OBJ,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
//SYSLMOD DD DSNAME=USERID.CLASS.LOAD(TAND3997),DISP=(,PASS),
// UNIT=SYSDA,SPACE=(CYL,(1,1,1))
//SYSUDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
/* |
This will get rid of your JCL error and crate a load module from the OBJ code. |
|
| Back to top |
|
 |
Robert Sample
Senior Member
Joined: 06 Jun 2008 Posts: 891 Location: Atlanta, GA
|
|
|
|
| Quote: |
| this is one of the ill effect of using Version Contoller tools |
I write a lot of the tools we use here, so I get familiar with all sorts of weird constructs. |
|
| Back to top |
|
 |
batusai
New User
Joined: 21 Aug 2008 Posts: 14 Location: lima peru
|
|
|
|
execute code
| Quote: |
//LKED EXEC PGM=IEWL,PARM='LIST,XREF,LET,MAP',COND=(5,LT,COBOL),
// REGION=512K
//SYSLIN DD DSNAME=USERID.CLASS.OBJ,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
//SYSLMOD DD DSNAME=USERID.CLASS.LOAD(TAND3997),DISP=(,PASS),
// UNIT=SYSDA,SPACE=(CYL,(1,1,1))
//SYSUDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSIN DD DUMMY
/* |
tso respons me
| Quote: |
STMT NO. MESSAGE
-
2 IEF645I INVALID REFERBACK IN THE COND FIELD |
6250I JOB IBMUSERL(JOB00051) SUBMITTED
10.55.41 JOB00051 $HASP165 BATUSAIL ENDED AT N1 - JCL ERROR CN(INTERNAL)
IKJ56254I USERID PLUS JOBNAME CHARACTERS CANNOT EXCEED MAXIMUM JOBNAME LENGTH O
F EIGHT
*** |
|
| Back to top |
|
 |
Robert Sample
Senior Member
Joined: 06 Jun 2008 Posts: 891 Location: Atlanta, GA
|
|
|
|
| Take the COND=(5,LT,COBOL) off the first line ... the JCL is written to be run as one long job and you're only doing part of it so you have to remove the condition code check. |
|
| Back to top |
|
 |
batusai
New User
Joined: 21 Aug 2008 Posts: 14 Location: lima peru
|
|
|
|
| Code: |
000001 //LKED EXEC PGM=IEWL,PARM='LIST,XREF,LET,MAP',COND=(5,LT,COBOL),
000002 // REGION=512K
000003 //SYSLIN DD DSNAME=USERID.CLASS.OBJ,DISP=(OLD,DELETE)
000004 // DD DDNAME=SYSIN
000005 //SYSLMOD DD DSNAME=USERID.CLASS.LOAD(TAND3997),DISP=(,PASS),
000006 // UNIT=SYSDA,SPACE=(CYL,(1,1,1))
000007 //SYSUDUMP DD SYSOUT=*
000008 //SYSPRINT DD SYSOUT=*
000009 //SYSIN DD DUMMY
000010 /* |
|
|
| Back to top |
|
 |
|
|
|