I guess I could do a series of calls to the exports things is they all share a global area
Thanks On Oct 29, 2019, at 8:47 AM, David Crayford <dcrayf...@gmail.com> wrote: > > Why do you need a DLL? Can you just use PIPI to call a static program? > >> On 2019-10-29 8:15 PM, Joseph Reichman wrote: >> 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 <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of >> Joe Monk >> Sent: Tuesday, October 29, 2019 3:34 AM >> To: IBM-MAIN@LISTSERV.UA.EDU >> 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 <reichman...@gmail.com> >> 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 <IBM-MAIN@LISTSERV.UA.EDU> On >>> Behalf Of Jon Perryman >>> Sent: Monday, October 28, 2019 8:38 PM >>> To: IBM-MAIN@LISTSERV.UA.EDU >>> 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 < >>> reichman...@gmail.com <mailto:reichman...@gmail.com> > 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 lists...@listserv.ua.edu <mailto:lists...@listserv.ua.edu> >>> with the >>> message: INFO IBM-MAIN >>> >>> ---------------------------------------------------------------------- >>> For IBM-MAIN subscribe / signoff / archive access instructions, send >>> email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN >>> >> ---------------------------------------------------------------------- >> For IBM-MAIN subscribe / signoff / archive access instructions, send email >> to lists...@listserv.ua.edu with the message: INFO IBM-MAIN >> >> ---------------------------------------------------------------------- >> For IBM-MAIN subscribe / signoff / archive access instructions, >> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN