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 <[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

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to