Discussion:
Looking for IPCS VERBX examples
(too old to reply)
Dan D
2018-06-01 23:26:16 UTC
Permalink
Raw Message
I'm looking for samples of how to do things within an IPCS VERB exit in assembler.
I have a lot of the simple things down but I'm confused with symbols, dataspaces and 64-bit storage.

Could someone send me or point me at some simple samples to create symbols, access a dataspace and 64-bit storage?
I've been through the IPCS Customization and other manuals but it's still a little confusing.

I think I need to understand the parameters to ADPLSEQS, ADPLSMAP and maybe ADPLSSYM.

Thanks,
Dan

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
e***@JUNO.COM
2018-06-03 13:38:53 UTC
Permalink
Raw Message
I would be interested in this as well

---------- Original Message ----------
From: Dan D <***@GMAIL.COM>
To: IBM-***@LISTSERV.UA.EDU
Subject: Looking for IPCS VERBX examples
Date: Fri, 1 Jun 2018 18:26:08 -0500

I'm looking for samples of how to do things within an IPCS VERB exit in assembler.
I have a lot of the simple things down but I'm confused with symbols, dataspaces and 64-bit storage.

Could someone send me or point me at some simple samples to create symbols, access a dataspace and 64-bit storage?
I've been through the IPCS Customization and other manuals but it's still a little confusing.

I think I need to understand the parameters to ADPLSEQS, ADPLSMAP and maybe ADPLSSYM.

Thanks,
Dan

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Lizette Koehler
2018-06-03 16:47:37 UTC
Permalink
Raw Message
I think sometimes it is helpful to provide a use case. Asking about specific parms may not get the right answer.

So what are you trying to do with the IPCS VERBX?

What errors are you getting?

What type of process are you trying to build.

The more details the easier it is to answer a question.


Lizette
-----Original Message-----
Dan D
Sent: Friday, June 01, 2018 4:26 PM
Subject: Looking for IPCS VERBX examples
I'm looking for samples of how to do things within an IPCS VERB exit in assembler.
I have a lot of the simple things down but I'm confused with symbols,
dataspaces and 64-bit storage.
Could someone send me or point me at some simple samples to create symbols,
access a dataspace and 64-bit storage?
I've been through the IPCS Customization and other manuals but it's still a
little confusing.
I think I need to understand the parameters to ADPLSEQS, ADPLSMAP and maybe ADPLSSYM.
Thanks,
Dan
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Wayne Driscoll
2018-06-03 18:28:29 UTC
Permalink
Raw Message
I haven't done a lot with dataspaces, but I have with 64 bit. What I do is set up 2 BLSRESSY areas, one with ABITS=31 and a second with ABITS=64 in order to get one with 4 byte pointers and one with 8 (not needed, you can retrieve 31 bit addresses with 64 bit pointers, but I was extending an old exit). Then when you use the ESS block, ensure that the XSSPBIT64 bit in the XSSPPFLG is set to one for 64 bit and zero for 31 bit. I don't have any simple samples that aren't intermingled with proprietary code at this point, maybe I can pull something together if you need more assistance. I found that looking at the expansion of the various mapping macros gave me more insight than the documentation in the IPCS Customization manual, btw.

Wayne Driscoll
Rocket Software
Note - All opinions are strictly my own.

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Dan D
Sent: Friday, June 1, 2018 6:26 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Looking for IPCS VERBX examples

I'm looking for samples of how to do things within an IPCS VERB exit in assembler.
I have a lot of the simple things down but I'm confused with symbols, dataspaces and 64-bit storage.

Could someone send me or point me at some simple samples to create symbols, access a dataspace and 64-bit storage?
I've been through the IPCS Customization and other manuals but it's still a little confusing.

I think I need to understand the parameters to ADPLSEQS, ADPLSMAP and maybe ADPLSSYM.

Thanks,
Dan

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
================================
Rocket Software, Inc. and subsidiaries ■ 77 Fourth Avenue, Waltham MA 02451 ■ Main Office Toll Free Number: +1 855.577.4323
Contact Customer Support: https://my.rocketsoftware.com/RocketCommunity/RCEmailSupport
Unsubscribe from Marketing Messages/Manage Your Subscription Preferences - http://www.rocketsoftware.com/manage-your-email-preferences
Privacy Policy - http://www.rocketsoftware.com/company/legal/privacy-policy
================================

This communication and any attachments may contain confidential information of Rocket Software, Inc. All unauthorized use, disclosure or distribution is prohibited. If you are not the intended recipient, please notify Rocket Software immediately and destroy all copies of this communication. Thank you.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Dan D
2018-06-04 14:48:01 UTC
Permalink
Raw Message
Thanks Wayne,

The reason for the request is like you said, the DOC is quite lacking. You can get some info from reading the macros but that's really not how DOC should be done.
The only three that I've had issues with are ADPLSEQS, ADPLSMAP and maybe ADPLSSYM. With the little doc/examples and the macros, and help from IBMers who are no longer there, I've got these working great. I've even created a program to take a listing of a DSECT and build format models to be used with ADPLSFMT.

Wayne, if you don't mind, could you send me a sample of your code that accesses 64-bit storage? I'd like to do that as well.

Thanks.
Dan

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Don Poitras
2018-06-04 15:28:38 UTC
Permalink
Raw Message
Post by Dan D
Thanks Wayne,
The reason for the request is like you said, the DOC is quite lacking. You can get some info from reading the macros but that's really not how DOC should be done.
The only three that I've had issues with are ADPLSEQS, ADPLSMAP and maybe ADPLSSYM. With the little doc/examples and the macros, and help from IBMers who are no longer there, I've got these working great. I've even created a program to take a listing of a DSECT and build format models to be used with ADPLSFMT.
Wayne, if you don't mind, could you send me a sample of your code that accesses 64-bit storage? I'd like to do that as well.
Thanks.
Dan
Like Wayne, I can't post the whole program and when I did this, I
needed access to C header files, so I wrote our verb exit in C and
call the LE program as a subtask of the assembler IPCS exit entry.
The C program posts the assembler mother do call the IPCS router.
I used the same names when I mapped the C headers as were in the
assembler dsects, so this should give you what you need:

---
static void imemcpy(void *buffer, long dumpadr, long len)
{
if (p->padpl->adplflag & adplsyno) // if user wants out, let him go
longjmp(buf, 1);

if (len > 8192)
{
iprintf("imemcpy len > 8192");
abort();
}
memcpy(p->pesr, p->pesri, sizeof(ESSY)); // init before use
memcpy(p->pxssp, p->pxsspi, sizeof(XSSP)); // init before use
memcpy(p->pesr->esrast, esrastcv, 2); // type of memory CPU ASID
p->pesr->esras2 = homeasid; // home asid
memcpy(p->pesr->esrlad, &dumpadr, 8); // dump area address
memcpy(p->pesr->esrdle, &len, 8); // dump area length

p->pxssp->xssppfl1 |= xsspbit64; // indicate BLSRESSY structs should be returned in ABITS=64 format
p->pxssp->xsspcode = xsspacc; // access storage
p->pxssp->xsspesr = p->pesr; // equate symbol record addr
p->pxssp->xsspbuf = p->cmd.cmd; // user buffer address
memcpy(p->pxssp->xsspmodn, "SASIPCS ", 8); // name of requestor

p->parm[0] = (ptr32) p->padpl; // adpl address
p->service = adplssym; // symbol service
p->parm[1] = (ptr32) &p->service;
p->parm[2] = (ptr32) p->pxssp; // symbol service parms

p->cecb = 0; // clear my ecb
POST(&p->aecb, 0); // post mom to call ipcs router
WAIT1(&p->cecb); // wait for mom
if (p->cecb != 0x40000000) // if error, exit
{
memset(buffer, 0, len);
memcpy(buffer, "FAIL", 4);
}
else
memcpy(buffer, p->cmd.cmd, len); // return to caller
}
---

Someday, I think I'll create a version of this I can put on the CBT tape. It
was a lot of work to figure out and I think should be easier to use than it
is.
--
Don Poitras - SAS Development - SAS Institute Inc. - SAS Campus Drive
***@sas.com (919) 531-5637 Cary, NC 27513

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Susan Shumway
2018-06-04 19:38:55 UTC
Permalink
Raw Message
This is good feedback and definitely worthy of a requirement, so
consider opening one. I'll direct my IPCS content developers to this
thread as a heads up.

-Sue Shumway
Post by Don Poitras
Post by Dan D
Thanks Wayne,
The reason for the request is like you said, the DOC is quite lacking. You can get some info from reading the macros but that's really not how DOC should be done.
The only three that I've had issues with are ADPLSEQS, ADPLSMAP and maybe ADPLSSYM. With the little doc/examples and the macros, and help from IBMers who are no longer there, I've got these working great. I've even created a program to take a listing of a DSECT and build format models to be used with ADPLSFMT.
Wayne, if you don't mind, could you send me a sample of your code that accesses 64-bit storage? I'd like to do that as well.
Thanks.
Dan
Like Wayne, I can't post the whole program and when I did this, I
needed access to C header files, so I wrote our verb exit in C and
call the LE program as a subtask of the assembler IPCS exit entry.
The C program posts the assembler mother do call the IPCS router.
I used the same names when I mapped the C headers as were in the
---
static void imemcpy(void *buffer, long dumpadr, long len)
{
if (p->padpl->adplflag & adplsyno) // if user wants out, let him go
longjmp(buf, 1);
if (len > 8192)
{
iprintf("imemcpy len > 8192");
abort();
}
memcpy(p->pesr, p->pesri, sizeof(ESSY)); // init before use
memcpy(p->pxssp, p->pxsspi, sizeof(XSSP)); // init before use
memcpy(p->pesr->esrast, esrastcv, 2); // type of memory CPU ASID
p->pesr->esras2 = homeasid; // home asid
memcpy(p->pesr->esrlad, &dumpadr, 8); // dump area address
memcpy(p->pesr->esrdle, &len, 8); // dump area length
p->pxssp->xssppfl1 |= xsspbit64; // indicate BLSRESSY structs should be returned in ABITS=64 format
p->pxssp->xsspcode = xsspacc; // access storage
p->pxssp->xsspesr = p->pesr; // equate symbol record addr
p->pxssp->xsspbuf = p->cmd.cmd; // user buffer address
memcpy(p->pxssp->xsspmodn, "SASIPCS ", 8); // name of requestor
p->parm[0] = (ptr32) p->padpl; // adpl address
p->service = adplssym; // symbol service
p->parm[1] = (ptr32) &p->service;
p->parm[2] = (ptr32) p->pxssp; // symbol service parms
p->cecb = 0; // clear my ecb
POST(&p->aecb, 0); // post mom to call ipcs router
WAIT1(&p->cecb); // wait for mom
if (p->cecb != 0x40000000) // if error, exit
{
memset(buffer, 0, len);
memcpy(buffer, "FAIL", 4);
}
else
memcpy(buffer, p->cmd.cmd, len); // return to caller
}
---
Someday, I think I'll create a version of this I can put on the CBT tape. It
was a lot of work to figure out and I think should be easier to use than it
is.
--
Sue Shumway
z/OS Product Documentation Lead
IBM Poughkeepsie
***@us.ibm.com

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Dan D
2018-06-04 14:51:15 UTC
Permalink
Raw Message
Sorry, I meant that I got the OTHERS working well but these three have me confused.

Thanks,
Dan

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Dan D
2018-06-05 04:04:21 UTC
Permalink
Raw Message
Don, thanks for the C sample. I'll convert it over to assemble and see if I can get something working.

Susan, I appreciate that you've noticed this and will be helping to get the manuals updated. I have heard from others in the past that there is more useful information within the mapping macros that in the IPCS manuals. Even still, it is not clear where to plug in addresses, set ASIDs etc.

Thank you both.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Loading...