IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

user exit in IBM Infosphere Optim


IBM Mainframe Forums -> DB2
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
jzhardy

Active User


Joined: 31 Oct 2006
Posts: 131
Location: brisbane

PostPosted: Tue Jul 25, 2023 12:00 pm
Reply with quote

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
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2030
Location: USA

PostPosted: Tue Jul 25, 2023 5:11 pm
Reply with quote

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
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Tue Jul 25, 2023 5:41 pm
Reply with quote

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
View user's profile Send private message
sergeyken

Senior Member


Joined: 29 Apr 2008
Posts: 2030
Location: USA

PostPosted: Tue Jul 25, 2023 6:39 pm
Reply with quote

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
View user's profile Send private message
Pedro

Global Moderator


Joined: 01 Sep 2006
Posts: 2547
Location: Silicon Valley

PostPosted: Wed Jul 26, 2023 1:56 am
Reply with quote

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
View user's profile Send private message
Pedro

Global Moderator


Joined: 01 Sep 2006
Posts: 2547
Location: Silicon Valley

PostPosted: Wed Jul 26, 2023 4:28 am
Reply with quote

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
View user's profile Send private message
jzhardy

Active User


Joined: 31 Oct 2006
Posts: 131
Location: brisbane

PostPosted: Wed Jul 26, 2023 5:01 am
Reply with quote

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
View user's profile Send private message
jzhardy

Active User


Joined: 31 Oct 2006
Posts: 131
Location: brisbane

PostPosted: Wed Jul 26, 2023 5:23 am
Reply with quote

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
View user's profile Send private message
jzhardy

Active User


Joined: 31 Oct 2006
Posts: 131
Location: brisbane

PostPosted: Wed Jul 26, 2023 6:27 am
Reply with quote

working fine now.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> DB2

 


Similar Topics
Topic Forum Replies
No new posts COBOL 6.4 - User Defined Function nee... COBOL Programming 2
No new posts PuTTY - "User is not a surrogate... IBM Tools 5
No new posts How to delete a user's alias from the... JCL & VSAM 11
No new posts InfoSphere OPTIM CSV ouput vs DSNTIUA... IBM Tools 3
No new posts Use of Perform Thru Exit COBOL Programming 6
Search our Forums:

Back to Top