On 2019-10-29 11:50 PM, Joseph Reichman wrote:
Peter thanks so much if I need a C main then this exercise in CELQPIPI is 
irrelevant


We use CEEPIPI and don't use main. We use subroutines with the following (this is C++ code)

#pragma linkage(FUWIPSTR, fetchable) // required for PIPI init_sub/call_sub



Now I need to figure out how to call a C main from non LE assembler as all of 
my code is that

On Oct 29, 2019, at 11:45 AM, Farley, Peter x23353 
<peter.far...@broadridge.com> wrote:
Joe,

 From my somewhat limited experience with CEEPIPI (only to enable 31-bit COBOL 
calls from 31-bit non-LE assembler subroutines called from 31-bit COBOL main), 
it looks to me like your 64-bit assembler code needs to set up a CEEPIPI 
INIT_SUB not an INIT_MAIN since you are calling the DLL as a subroutine.

You may also need to use a "stub" C main program to just call your assembler 
64-bit code and then exit just to establish the C main environment, since as you found 
the CELQPRLG doesn't allow you to make your assembler code look like a 64-bit C main.

HTH

Peter

-----Original Message-----
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf Of 
Joseph Reichman
Sent: Tuesday, October 29, 2019 11:32 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Return code X'20' 32 from CELQPIPI INIT_MAIN

It was my understanding after a lot of digging that I couldn’t call 64 bit C 
from assembler because the 64 bit LE assembler prologue  macro CELQPRLG doesn’t 
support main like CEEENTRY and there for the LE environment isn’t established I 
just thought  that CELQPIPI would do that for assembler but am having a hard 
time getting that working with a 64 bit LE assembler Thanks

On Oct 29, 2019, at 11:26 AM, scott Ford <idfli...@gmail.com

wrote:

Joe,

I havent dont 64bit C ..but I would be  surprised the guys here on the
listserv havent .
I understand 64bit in theory but working as a ISV my mgmt is stuck in
the Cobol back woods.

Scott

On Tue, Oct 29, 2019 at 9:42 AM Joseph Reichman
<reichman...@gmail.com>
wrote:

I am trying to call a AMODE 64 bit C DLL (exported function) from
assembler and because CELQPRLG (LE 64 bit prologue) doesn't support
main like CEEENTRY (MAIN=YES) Cannt seem do it I thought the
INIT_MAIN function for CELQPIPI would do the trick for me

Thanks



-----Original Message-----
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On
Behalf Of scott Ford
Sent: Tuesday, October 29, 2019 9:35 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Return code X'20' 32 from CELQPIPI INIT_MAIN

Joe:

What are you trying to accomplish exactly so we can better assist you ?
Scott

On Tue, Oct 29, 2019 at 8:52 AM Joseph Reichman
<reichman...@gmail.com>
wrote:

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
.v
2r1.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

-----------------------------------------------------------------
This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.


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

Reply via email to