|
View previous topic :: View next topic
|
| Author |
Message |
robert-ohlen
New User
Joined: 01 Jun 2007 Posts: 11 Location: Soiron
|
|
|
|
When I compile the Package routine, I haven't problem; but when I compile the Main procedure, I have a message that indicates unknown procedure in a package routine:
IBM1237I E 16.0 EXTERNAL ENTRY attribute is assumed for PUSH.
IBM1237I E 18.0 EXTERNAL ENTRY attribute is assumed for VIEW.
Is there an option or a parameter with the link edit to make known the procedures of the package?
Here the code of the two programs:
Main Procedure.
| Code: |
PLI037G: PROC OPTIONS(MAIN) REORDER;
DCL 1 ST1,
2 CLE_ST UNION,
3 CLE FIXED BIN(31),
3 CLE_C CHAR(4),
2 DATA CHAR(15);
DCL PLI037B ENTRY;
DCL LIST1 PTR INIT(NULL());
DCL SYSPRINT FILE STREAM OUTPUT PRINT;
DCL I FIXED BIN(31);
DCL ALPHA CHAR VALUE('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
DO I=1 TO 26;
ST1.CLE =I*1000;
ST1.DATA=REPEAT(SUBSTR(ALPHA,I,1),14);
CALL PUSH(LIST1,ST1.CLE_C,ST1.DATA);
END;
CALL VIEW(LIST1,ST1.CLE_C,ST1.DATA);
END PLI037G; |
And Package routine.
| Code: |
PLI037B: PACKAGE EXPORTS (*);
DCL LGCLE FIXED BIN(31);
DCL LGDATA FIXED BIN(31);
DCL 1 ST BASED,
2 CLE CHAR(LGCLE),
2 DATA CHAR(LGDATA),
2 PREC PTR;
/*-------------------------------------------------------------------*/
PUSH: PROC(DEBUT,CLE,DATA) REORDER;
DCL DEBUT PTR;
DCL CLE CHAR(*);
DCL DATA CHAR(*);
LGCLE=STG(CLE);
LGDATA=STG(DATA);
ALLOCATE ST SET(DEBUT);
DEBUT->ST.CLE=CLE;
DEBUT->ST.DATA=DATA;
DEBUT->ST.PREC=NULL();
END PUSH;
/*-------------------------------------------------------------------*/
VIEW: PROC(DEBUT,CLE,DATA) REORDER;
DCL DEBUT PTR;
DCL CLE CHAR(*);
DCL DATA CHAR(*);
LGCLE=STG(CLE);
LGDATA=STG(DATA);
DCL TMP PTR;
TMP=DEBUT;
DO WHILE(TMP^=NULL());
PUT SKIP EDIT('CLE:',TMP->ST.CLE,' DATA:',TMP->ST.DATA)(A);
TMP=TMP->ST.PREC;
END;
END VIEW;
END PLI037B; |
|
|
| Back to top |
|
 |
ilanjai
New User
Joined: 11 Jul 2007 Posts: 2 Location: Hyderabad
|
|
|
|
Change the following statement
DCL PLI037B ENTRY;
to
DCL PLI037B EXTERNAL ENTRY;
Ensure that PLI037B is part of your Link Edit step.
It should start working |
|
| Back to top |
|
 |
robert-ohlen
New User
Joined: 01 Jun 2007 Posts: 11 Location: Soiron
|
|
|
|
It's a value by default. The message in the compilation is
PLI037B CONSTANT EXTERNAL ENTRY
And in the compile JCL, a library of PLI037B is in SYSLIB.
have you an other idea ? |
|
| Back to top |
|
 |
robert-ohlen
New User
Joined: 01 Jun 2007 Posts: 11 Location: Soiron
|
|
|
|
If that can help you to help me, here the jcl of compilation
| Code: |
//*--------------------------------------------------------------------
//* COMPILE STEP
//*--------------------------------------------------------------------
//PLI IF RC LT 9 THEN
//PLI EXEC PGM=IBMZPLI,REGION=0M,
// PARM='àDD:OPTIONS,LIST,MAP,OFFSET,NOSTMT'
//STEPLIB DD DSN=IBMZ.SIBMZCMP,DISP=SHR
//OPTIONS DD *
AGGREGATE,ARCH(5),ATTRIBUTES(FULL),BACKREG(11),BIFPREC(15),CMPAT(V2),
DFT(REORDER,BYADDR,RETURNS(BYVALUE),CONN,DESCRIPTOR),FLAG(I),FLOAT(AFP),
EXTRN(SHORT),GONUMBER,INSOURCE,LIMITS(EXTNAME(7),FIXEDDEC(15,31)),
LINECOUNT(48),MACRO,MARGINS(2,72,1),MAXMSG(32767),NEST,NOMARGINI,
NORENT, OPTIONS,OPT(TIME),RULES(IBM),TUNE(5),SOURCE,STMT,XREF(FULL)
/*
//SYSLIB DD DSN=&SYSUID..T.COPY,DISP=SHR
//SYSIN DD DSN=&SYSUID..T.PGMVA(PLI037A),DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSLIN DD DSN=,DISP=(MOD,PASS),UNIT=SYSDA,
// SPACE=(CYL,(1,1)),DCB=(LRECL=80,BLKSIZE=0)
//SYSUT1 DD DSN=,UNIT=SYSDA,
// SPACE=(1024,(200,50),,CONTIG,ROUND),DCB=BLKSIZE=1024
//PLI ENDIF
//*--------------------------------------------------------------------
//* LINK STEP
//*--------------------------------------------------------------------
//LINK IF RC LT 9 THEN
//LINK EXEC PGM=IEWBLINK,REGION=32M,
// PARM='NOXREF'
//SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR
// DD DSN=&SYSUID..T.OBJVA,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSN=*.PLI.SYSLIN,DISP=(OLD,PASS)
// DD DDNAME=SYSIN
//SYSLMOD DD DSN=&SYSUID..T.LOAD(PLI037A),DISP=SHR
//SYSDEFSD DD DUMMY
//SYSIN DD DUMMY
//LINK ENDIF |
| Code: |
//*--------------------------------------------------------------------
//* COMPILE STEP
//*--------------------------------------------------------------------
//PLI IF RC LT 9 THEN
//PLI EXEC PGM=IBMZPLI,REGION=0M,
// PARM='àDD:OPTIONS,LIST,MAP,OFFSET,NOSTMT'
//STEPLIB DD DSN=IBMZ.SIBMZCMP,DISP=SHR
//OPTIONS DD *
AGGREGATE,ARCH(5),ATTRIBUTES(FULL),BACKREG(11),BIFPREC(15),CMPAT(V2),
DFT(REORDER,BYADDR,RETURNS(BYVALUE),CONN,DESCRIPTOR),FLAG(I),FLOAT(AFP),
EXTRN(SHORT),GONUMBER,INSOURCE,LIMITS(EXTNAME(7),FIXEDDEC(15,31)),
LINECOUNT(48),MACRO,MARGINS(2,72,1),MAXMSG(32767),NEST,NOMARGINI,
NORENT, OPTIONS,OPT(TIME),RULES(IBM),TUNE(5),SOURCE,STMT,XREF(FULL)
/*
//SYSLIB DD DSN=&SYSUID..T.COPY,DISP=SHR
//SYSIN DD DSN=&SYSUID..T.PGMVA(PLI037B),DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSLIN DD DSN=,DISP=(MOD,PASS),UNIT=SYSDA,
// SPACE=(CYL,(1,1)),DCB=(LRECL=80,BLKSIZE=0)
//SYSUT1 DD DSN=,UNIT=SYSDA,
// SPACE=(1024,(200,50),,CONTIG,ROUND),DCB=BLKSIZE=1024
//PLI ENDIF
//*--------------------------------------------------------------------
//* LINK STEP
//*--------------------------------------------------------------------
//LINK IF RC LT 9 THEN
//LINK EXEC PGM=IEWBLINK,REGION=32M,
// PARM='NCAL,LET,NOXREF,DYNAM=DLL'
//SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR
// DD DSN=&SYSUID..T.OBJVA,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSN=*.PLI.SYSLIN,DISP=(OLD,PASS)
// DD DDNAME=SYSIN
//SYSLMOD DD DSN=&SYSUID..T.OBJVA(PLI037B),DISP=SHR
//SYSDEFSD DD DUMMY
//SYSIN DD DUMMY
//LINK ENDIF |
|
|
| Back to top |
|
 |
waneked
New User
Joined: 25 Sep 2007 Posts: 2 Location: switzerland
|
|
|
|
Hi robert-ohlen
you must declare for eatch entry (procedure in a package) an external entry in the main program.
dcl push external entry (ptr, char(*), char(*));
dcl view external entry (ptr, char(*), char(*)); |
|
| Back to top |
|
 |
robert-ohlen
New User
Joined: 01 Jun 2007 Posts: 11 Location: Soiron
|
|
|
|
Sorry for my response time
I have the same response to LINK.
IEW2456E 9207 SYMBOL PUSH UNRESOLVED. MEMBER COULD NOT BE INCLUDED FROM THE DESIGNATED CALL LIBRARY.
IEW2456E 9207 SYMBOL VIEW UNRESOLVED. MEMBER COULD NOT BE INCLUDED FROM THE DESIGNATED CALL LIBRARY. |
|
| Back to top |
|
 |
enrico-sorichetti
Superior Member

Joined: 14 Mar 2007 Posts: 10903 Location: italy
|
|
|
|
There are always misunderstanding on Autocall feature..
How in heaven is supposed the linkage_editor/binder realize
that push and view are entry points of pli037b ???
You have two alternatives,
1) include explicitly the object with multiple entry points
2) when linking ( but I feel that' useless) the load thing
add tho lked syslin an alias statement for each one of the entry points.
usually by naming tradition an
...obj... contains text format things
...mod... contains load format things
there is no need to link/bind statically called subroutines/packages |
|
| Back to top |
|
 |
|
|
 |
All times are GMT + 6 Hours |
|