View previous topic :: View next topic
|
Author |
Message |
jzhardy
Active User
Joined: 31 Oct 2006 Posts: 137 Location: brisbane
|
|
|
|
having problems using an Optim supplied user exit (FOPSRXS1) for relating a numeric column to a char column.
- Modified FOPSRXS1, changing in/out char- from PIC X(5) to PIC X(12).
- Compiles and link edits OK to program object.
- Extract job runs with RC 0, but no row fetched from child table.
When I run in trace I get the following which suggests a possible linkage error :
PARENT/CHILD FLAG: C
NUMBER OF ROWS: 0000000000000000001
NUMBER OF SOURCE ROWS: 0000000000000000474
NUMBER OF DEST ROWS: 000000000000000000J
compile JOB is :
Code: |
//XXXXXCMP JOB (DE3,N),'COMPILE',
[job card info here]
//STEP1 EXEC PGM=IGYCRCTL,PARM='RENT,NODYNAM,LIB'
//STEPLIB DD DSNAME=SYS1.COBOL.V6R2A.SIGYCOMP,DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
...
//SYSUT15 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSMDECK DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSNAME=xxxxx.OBJ(FOPSRXS1),UNIT=SYSDA,
// DISP=SHR,SPACE=(TRK,(3,3))
//SYSIN DD DSNAME=xxxxx.COBOL(FOPSRXS1),DISP=SHR
/*
|
link-edit job is:
Code: |
//XXXXXLE JOB (DE3,N),'LINK EDIT',
[job card info]
//*
//MYLIBS1 JCLLIB ORDER=SYS1.COBOL.V4R2A.SIGYPROC
//STEP1 EXEC IGYWCL,LNGPRFX='SYS1.COBOL.V4R2A',
// LIBPRFX='SYS1.CEE',PARM='RENT'
//COBOL.SYSIN DD DSNAME=XXXXX.COBOL(FOPSRXS1),DISP=SHR
//LKED.SYSLMOD DD DSN=XXXXX.LOADLIB(FOPSRXS1),DISP=OLD |
thinking that there may be something wrong with my link or compile options. Wondering also if this needs to be converted to load module - as opposed to program object. (note that when I did this I got the following error :
IEW2606S 4B39 MODULE INCORPORATES VERSION 3 PROGRAM OBJECT FEATURES AND CANNOT BE SAVED IN LOAD MODULE FORMAT.
Any help appreciated. |
|
Back to top |
|
|
sergeyken
Senior Member
Joined: 29 Apr 2008 Posts: 2117 Location: USA
|
|
|
|
jzhardy wrote: |
link-edit job is:
Code: |
//XXXXXLE JOB (DE3,N),'LINK EDIT',
[job card info]
//*
//MYLIBS1 JCLLIB ORDER=SYS1.COBOL.V4R2A.SIGYPROC
//STEP1 EXEC IGYWCL,LNGPRFX='SYS1.COBOL.V4R2A',
// LIBPRFX='SYS1.CEE',PARM='RENT'
//COBOL.SYSIN DD DSNAME=XXXXX.COBOL(FOPSRXS1),DISP=SHR
//LKED.SYSLMOD DD DSN=XXXXX.LOADLIB(FOPSRXS1),DISP=OLD |
thinking that there may be something wrong with my link or compile options. Wondering also if this needs to be converted to load module - as opposed to program object. (note that when I did this I got the following error :
IEW2606S 4B39 MODULE INCORPORATES VERSION 3 PROGRAM OBJECT FEATURES AND CANNOT BE SAVED IN LOAD MODULE FORMAT.
Any help appreciated. |
The sole purpose of any link-edit job is: conversion of an object code to load module format. |
|
Back to top |
|
|
Garry Carroll
Senior Member
Joined: 08 May 2006 Posts: 1198 Location: Dublin, Ireland
|
|
|
|
Quote: |
The sole purpose of any link-edit job is: conversion of an object code to load module format. |
The linkage editor/binder converts the object code emitted from a compiler to either load module format or program object format.
Any module that contains version 3 program objects MUST be linked into a PDSe library as a program object.
Garry. |
|
Back to top |
|
|
sergeyken
Senior Member
Joined: 29 Apr 2008 Posts: 2117 Location: USA
|
|
|
|
Maybe, DSNTYPE is not LIBRARY?
Quote: |
Compiler output data sets can be PDS or PDSE, including the object module. The output of the bind step must be a PDSE. When COBOL object modules are bound (link-edited), they become program objects and must be stored in PDSE data sets. |
|
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2583 Location: Silicon Valley
|
|
|
|
re: "When I run in trace I get the following which suggests a possible linkage error"
I do not understand how those messages suggest a linkage error. Can you please explain? |
|
Back to top |
|
|
Pedro
Global Moderator
Joined: 01 Sep 2006 Posts: 2583 Location: Silicon Valley
|
|
|
|
fyi. Many people use linkage editor and binder interchangeably, as well as using load module and program objects interchangeably.
But my recollection is that the linkage editor that takes an object deck and creates load modules only.
Whereas the binder is a different program that takes an object deck and it creates a program object.
Load modules and program objects serve the same purpose, but their internal format is different. Program objects are the newer format. I do not know what 'version 3' things are, but my experience is that program objects allow you to write larger programs.
I see no advantage of ever trying the linkage editor when there is something wrong with binder result. |
|
Back to top |
|
|
jzhardy
Active User
Joined: 31 Oct 2006 Posts: 137 Location: brisbane
|
|
|
|
sorry, i misinterpreted the display of "J" - it's just a negative value. the values (from Xpediter trace) are :
Code: |
P 05 NUMBER-ROWS P > +000000000000000001
P 05 NUMBER-SOURCE-ROWS P > +000000000000000474
P 05 NUMBER-DEST-ROWS P > -000000000000000001 |
no linkage problem. I'll spend some time today doing a more detailed investigation ... |
|
Back to top |
|
|
jzhardy
Active User
Joined: 31 Oct 2006 Posts: 137 Location: brisbane
|
|
|
|
which is actually the clue.
I need to match between sqltype=485 (packed decimal) and fixed char (sqltype 448), which just requires a small code change. |
|
Back to top |
|
|
jzhardy
Active User
Joined: 31 Oct 2006 Posts: 137 Location: brisbane
|
|
|
|
working fine now. |
|
Back to top |
|
|
|