This is add_entry I was using INIT_SUB, INIT_MAIN regardless that’s a good idea
to try to use add_entry
After init_sub/MAIN
This is the program I trying to initiate as in Assembler LE 64 bit prolog
CELQPRLG does not have a main and I cannot call a 64 C DLL I was thinking
CELQPIPI would resolve these issues
Thanks
TEST64A CELQPRLG FETCHABLE=RENT,PSECT=MYPSECT,ENTNAME=TEST64A
YREGS
* LOAD EP=CEETEST
* LR R15,R0
* BASR R14,R15
CELQCALL opendata,(SYSADATA),WORKREG=10
XR R15,R15
CELQEPLG
SYSADATA DC CL8'SYSADATA'
* CEEPDDA opendata,SCOPE=IMPORT
PARM1 DC A(COMMANDS)
PARM2 DC A(FEEDBACK)
DS 0H
DC H'9'
COMMANDS DC C'AT ENTRY '
FEEDBACK DS CL12
CEEDSA SECTYPE=XPLINK PING OF THE DYNAMIC SAVE AREA
CEECAA MAPPING OF THE COMMON ANCHOR AREA
*LLPPA CEEPPA
WORKAREA DSECT
DS 0D
WORKSIZE EQU *-WORKAREA
* CEEEDB MAPPING OF THE ENCLAVE DATA BLOCK
END
-----Original Message-----
From: IBM Mainframe Discussion List <[email protected]> On Behalf Of Joe
Monk
Sent: Tuesday, October 29, 2019 3:34 AM
To: [email protected]
Subject: Re: Return code X'20' 32 from CELQPIPI INIT_MAIN
So .... according to:
"20 The routine_name contains only blanks and the routine_entry was zero.
The PreInit table was not updated."
https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.ceeam00/ceeam141.htm
Joe
On Mon, Oct 28, 2019 at 8:55 PM Joseph Reichman <[email protected]>
wrote:
> The listing has the SYSSTATE set AMODE 64 The LISTPSW indicates
> botH the EA and BA BITS of the PSW as one indicating AMODE 64 at
> location F8 right before the call CELQPIPI
>
>
> CEEWQPIP: LOADing CELQPIPI
> CEEWQPIP: Doing CELQPIPI INIT_MAIN
> IKJ57024I AT +F6
> TEST
> istpsw
> IKJ57652I PSW LOCATED AT 8BA068
> XRXXXTIE KEY XMWP AS CC PROGMASK EA BA INSTR ADDR
> 00000111 8 1101 00 00 0000 1 1 1F7010F6
>
> TEST
> t +f8
> TEST
> o
> CEEWQLOD: Called to LOAD "TEST64A "
> IKJ57024I AT +F8
> TEST
>
> The program is AMODE 64
>
> ________ TEST64A 00000D30 0001D6 00 64
> ANY
>
> This is a listing of the table
> +CEEXPTBL DC CL8'CELQPTBL' Eyecatcher
> + DC A(CELQPIT0058) Number of e
> + DC F'16' Entry size
> + DC F'100' Version
> ice routines
>
> Source Statement HLASM R6
> + DC AL1(0)
> + DC 3X'00'
> CELQPITY TEST64A,0 ically load CE
> + DC CL8'TEST64A' Name, set t
> + DC AD(0) Load dblwd
> CELQPITS , End of CELQPIP
> +CELQPIT0058 EQU 1 Number of e
> *
> Here is the listing of TEST64A
>
> TEST64A CELQPRLG FETCHABLE=RENT,PSECT=MYPSECT,ENTNAME=TEST64A
> YREGS
> * LOAD EP=CEETEST
> * LR R15,R0
> * BASR R14,R15
> CELQCALL opendata,(SYSADATA),WORKREG=10
> XR R15,R15
> CELQEPLG
> SYSADATA DC CL8'SYSADATA'
> * CEEPDDA opendata,SCOPE=IMPORT
> PARM1 DC A(COMMANDS)
> PARM2 DC A(FEEDBACK)
>
> Here is the link
> For TEST64A
>
> //*****************************************************************
> //* LINK EDIT THE PROGRAM *
> //*****************************************************************
> //STEP0200 EXEC PGM=IEWL,COND=(0,LT,STEP0100),
> // PARM='AMODE(64),LIST,MAP,XREF,CASE=MIXED,DYNAM=DLL'
> //SYSPRINT DD SYSOUT=*
> //SYSDEFSD DD SYSOUT=*
> //OBJ DD DSN=&&HEXOBJ,DISP=(OLD,PASS)
> //SYSLIB DD DISP=SHR,DSN=IBMUSER.DBGR.DLLLIB
> // DD DISP=SHR,DSN=CEE.SCEEBND2
> // DD DISP=SHR,DSN=CEE.SCEELKED
> //SYSLMOD DD DISP=SHR,DSN=IBMUSER.DBGR.DLLLIB
> //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(3,2)),DSN=&SYSUT1
> //SYSPRINT DD SYSOUT=*,DCB=(RECFM=FB,BLKSIZE=3509)
> //SYSLIN DD *
> IMPORT CODE64,'SYSADATA','opendata'
> INCLUDE OBJ(TEST64A)
> ENTRY TEST64A
> NAME TEST64A(R)
>
>
>
>
>
> 84 *
> 85
> **********************************************************************
> 86 *
> 00000000 00000000 000007B0 87 CEEWQPIP CSECT ,
> 88 CEEWQPIP AMODE 64
> 89 CEEWQPIP RMODE 31
> 90 SYSSTATE
> AMODE64=YES
> 91+* THE VALUE OF
> SYSSTATE IS NOW SET TO ASCENV=P AMODE64=YES ARCHLX01-SYSSTATE
> + VL=2
> OSREL=00000000
> 00000000 010E 92 SAM64 ,
> 93 *
> 94 *
> 95 * Standard 64-bit
> entry linkage
> 96 *
> -----------------------------
> 97 *
> 00000002 EBEC D008 0024 00000008 98 STMG
> R14,R12,SAVF4SAG64RS14-SAVF4SA(R13) Save caller regs
> 00000008 0DB0 99 BASR R11,0
> Set up basereg
> R:B 0000000A 100 USING *,R11
> Addressabliity
> 101 GETMAIN
> RU,LV=DSA_L Obtain DSA
> 0000000A 103+ DS 0H
> @P5C 01-GETMAIN
> 0000000A 104+IHB0002C DS 0H
> 01-GETMAIN
> 0000000A 5800 B36E 00000378 105+ L
> 0,=A(DSA_L) LOAD LENGTH 01-GETMAIN
> 0000000E 58F0 B372 0000037C 106+ L
> 15,=AL1(B'00000000',(0),(0),B'00000010') X01-GETMAIN
> +
> LOAD GETMAIN PARMS
> 00000012 1B11 107+ SR 1,1
> ZERO RESERVED REG 1 01-GETMAIN
> 00000014 0A78 108+ SVC 120
> ISSUE GETMAIN SVC 01-GETMAIN
> 00000016 E3D0 1080 0024 00000080 109 STG
> R13,SAVF4SAPREV-SAVF4SA(,R1) Set backchain
> i0000001C E310 D088 0024 00000088 110 STG
> R1,SAVF4SANEXT-SAVF4SA(,R13) Set fwd chain
> Sample AMODE64 PreInit DRIVER with service routines
> Page 5
> Active Usings: CEEWQPIP+X'A',R11
> Loc Object Code Addr1 Addr2 Stmt Source Statement
> HLASM R6.0 2019/10/28 20.02
> 00000022 D203 D004 B376 00000004 00000380 111 MVC
> SAVF4SAID-SAVF4SA(R4,R13),=A(SAVF4SAID_VALUE) "F4SA"
> 00000028 B904 00D1 112 LGR
> R13,R1 Set up DSAreg
> R:D 00000000 113 USING
> DSA,R13 Addressability
> 114 *
> 115 *
> 116 * Issue LOAD for
> CELQPIPI (will ABEND if LOAD fails)
> 117 *
> -----------------------
> 118 *
> 119 WTO
> 'CEEWQPIP: LOADing CELQPIPI',ROUTCDE=11
> 0000002C 121+ CNOP 0,4
> 01-WTO
> 0000002C A715 0013 00000052 122+ BRAS
> 1,IHB0004A BRANCH AROUND MESSAGE @LCC 01-WTO
> 00000030 001E 123+ DC AL2(30)
> TEXT LENGTH @YA17152 01-WTO
> 00000032 8000 124+ DC
> B'1000000000000000' MCSFLAGS 01-WTO
> 00000034 C3C5C5E6D8D7C9D7 125+ DC
> C'CEEWQPIP: LOADing CELQPIPI' X01-WTO
> 0000003C 7A40D3D6C1C48995 +
> MESSAGE TEXT @L6C
> 0000004E 0000 126+ DC
> B'0000000000000000' DESCRIPTOR CODES 01-WTO
> 00000050 0020 127+ DC
> B'0000000000100000' ROUTING CODES 01-WTO
> 00000052 128+IHB0004A DS 0H
> 01-WTO
> 00000052 0A23 129+ SVC 35
> ISSUE SVC 35 @L6A 01-WTO
> 130 *
> 131 LOAD
> EP=CELQPIPI LOAD LE main module
> 00000054 133+ CNOP 0,4
> @L2P 01-LOAD
> 00000054 A7F5 0006 00000060 134+ BRAS
> 15,LOAD2_0006 BRANCH AROUND CONSTANT(S) 01-LOAD
> 00000058 135+LD2_0006 DS 0H
> 01-LOAD
> 00000058 C3C5D3D8D7C9D7C9 136+LE2_0006 DC
> CL8'CELQPIPI' ENTRY POINT NAME 01-LOAD
> 00000060 137+LOAD2_0006 DS 0H
> 01-LOAD
> 00000060 4100 F000 00000000 138+ LA
> 0,LE2_0006-LD2_0006(,15) ADDR OF PARAMETER 01-LOAD
> 00000064 1B11 139+ SR 1,1
> SHOW NO DCB PRESENT 01-LOAD
> 00000066 0A08 140+ SVC 8
> 01-LOAD
> 00000068 E300 B366 0080 00000370 141 NG
> R0,=X'00000000FFFFFFFE' Clear low (AMODE64) bit
> 0000006E E300 D090 0024 00000090 142 STG
> R0,CELQPIPI_EP Save CELQPIPI E.P. Address
> 143 *
> 144 *
> 145 * Set up Service
> Routine Vector and parm
> 146 *
> --------------------------------------
> 147 *
> 00000074 D24F D0E0 B696 000000E0 000006A0 148 MVC
> SV_DYNAMIC,SV_STATIC Copy over into DSA
> 0000007A 41F0 D1E8 000001E8 149 LA
> R15,USER_AREA Point to 1000-byte user area
> 0000007E E3F0 D0E8 0024 000000E8 150 STG
> R15,SV_UWORD SV user word -> user area
> 00000084 41F0 D0E0 000000E0 151 LA
> R15,SV_DYNAMIC Address of modifiable SV
> 00000088 E3F0 D0A0 0024 000000A0 152 STG
> R15,SERVICE_RTNS Save as parm for INIT_MAIN
> 153 *
> 154 *
> 155 * Do CELQPIPI
> INIT_MAIN
> 156 *
> ---------------------
> 157 *
> 158 WTO
> 'CEEWQPIP: Doing CELQPIPI INIT_MAIN',ROUTCDE=11
> 0000008E 0700 160+ CNOP 0,4
> 01-WTO
> 00000090 A715 0017 000000BE 161+ BRAS
> 1,IHB0008A BRANCH AROUND MESSAGE @LCC 01-WTO
> 00000094 0026 162+ DC AL2(38)
> TEXT LENGTH @YA17152 01-WTO
> 00000096 8000 163+ DC
> B'1000000000000000' MCSFLAGS 01-WTO
> 00000098 C3C5C5E6D8D7C9D7 164+ DC
> C'CEEWQPIP: Doing CELQPIPI INIT_MAIN' X01-WTO
> 000000A0 7A40C49689958740 +
> MESSAGE TEXT @L6C
> 000000BA 0000 165+ DC
> B'0000000000000000' DESCRIPTOR CODES 01-WTO
> i000000BC 0020 166+ DC
> B'0000000000100000' ROUTING CODES 01-WTO
> Sample AMODE64 PreInit DRIVER with service routines
> Page 6
> Active Usings: CEEWQPIP+X'A',R11 DSA,R13
> Loc Object Code Addr1 Addr2 Stmt Source Statement
> HLASM R6.0 2019/10/28 20.02
> 000000BE 167+IHB0008A DS 0H
> 01-WTO
> 000000BE 0A23 168+ SVC 35
> ISSUE SVC 35 @L6A 01-WTO
> 169 *
> 000000C0 B982 0000 170 XGR R0,R0
> 000000C4 E3F0 D090 0004 00000090 171 LG
> R15,CELQPIPI_EP Address of CELQPIPI E.P.
> 172 *
> 174 CALL (15),
> X
>
> (INIT_MAIN, CELQPIPI INIT_MAIN request X
>
> CEEXPTBL_ADDR, Address of CELQPIPI table X
>
> SERVICE_RTNS, Address of service rtn vector X
> TOKEN),
> Token from INIT_MAIN X
>
> MF=(E,CALL_PL)
> 000000CA 176+ DS 0H
> 01-CALL
> 000000CA 4110 D138 00000138 181+ LA
> 1,CALL_PL LOAD PARAMETER REG 1 03-IHBINNRR
> 000000CE 4100 B386 00000390 182+ LA
> 0,INIT_MAIN PICKUP PARAMETER 02-IHBOPLTX
> 000000D2 E300 1000 0024 00000000 183+ STG 0,0(0,1)
> STORE INTO PARAM. LIST 02-IHBOPLTX
> 000000D8 4100 B57E 00000588 184+ LA
> 0,CEEXPTBL_ADDR PICKUP PARAMETER 02-IHBOPLTX
> 000000DC E300 1008 0024 00000008 185+ STG 0,8(0,1)
> STORE INTO PARAM. LIST 02-IHBOPLTX
> 000000E2 4100 D0A0 000000A0 186+ LA
> 0,SERVICE_RTNS PICKUP PARAMETER 02-IHBOPLTX
> 000000E6 E300 1010 0024 00000010 187+ STG
> 0,16(0,1) STORE INTO PARAM. LIST 02-IHBOPLTX
> 000000EC 4100 D098 00000098 188+ LA 0,TOKEN
> PICKUP PARAMETER 02-IHBOPLTX
> 000000F0 E300 1018 0024 00000018 189+ STG
> 0,24(0,1) STORE INTO PARAM. LIST 02-IHBOPLTX
> 000000F6 05EF 190+ BALR 14,15
> BRANCH TO ENTRY POINT 01-CALL
> 191 *
> 192 *
> 193 * Check results
> of INIT_MAIN
> 194 *
> 000000F8 B902 002F 195 LTGR
>
> -----Original Message-----
> From: IBM Mainframe Discussion List <[email protected]> On
> Behalf Of Jon Perryman
> Sent: Monday, October 28, 2019 8:38 PM
> To: [email protected]
> Subject: Re: Return code X'20' 32 from CELQPIPI INIT_MAIN
>
> The CALL macro supports 32 and 64 bit parm addresses. I believe it
> defaults to 32 bit and the SYSSTATE macro is used to change it. Does
> CELQPITY require 64 bit parm list? If so, make sure you have SYSSTATE
> prior to the call. Also make sure SYSSTATE is before the CALL MF=L.
>
> I've never used TEST so I'm not familiar with the specifics. Your
> listing below seems to show it running the program with AMODE=31 and
> the L commands only display fullwords. Did you switch to AMODE64 before
> calling CELQPITY?
>
>
> Jon.
>
> On Monday, October 28, 2019, 05:08:58 PM PDT, Joseph Reichman <
> [email protected] <mailto:[email protected]> > wrote:
>
> Just tried it with the service_rtns parm exactly as it was in the
> sample with the exception That the CELQPITY points to my 64 bit
> assembler program TEST64A program and do X'20' DECIMAL 32
>
> CALL (15),
> X
> (INIT_MAIN, CELQPIPI INIT_MAIN request X
> CEEXPTBL_ADDR, Address of CELQPIPI table X
> SERVICE_RTNS, Address of service rtn vector X
> TOKEN), Token from INIT_MAIN
> X
> MF=(E,CALL_PL)
>
> I traced the CEEWQLOAD it loaded TEST64A which had bit 63 as a one
> After the load
>
> IKJ57382I ENTRY POINT AT 1F790140 AMODE=31 TEST L +F6
> +F6 05EFB902 TEST AT +F6 TEST AT +F8 TEST GO
> CEEWQPIP: LOADing CELQPIPI
> CEEWQPIP: Doing CELQPIPI INIT_MAIN IKJ57024I AT +F6 TEST GO
> CEEWQLOD: Called to LOAD "TEST64A " IKJ57024I AT +F8 TEST L 15R
> 15R
> 00000020
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions, send
> email to [email protected] <mailto:[email protected]>
> with the
> message: INFO IBM-MAIN
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions, send
> email to [email protected] with the message: INFO IBM-MAIN
>
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to
[email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN