Re: IPCS VERBX 64bit storage

2022-09-22 Thread Binyamin Dissen
On Thu, 22 Sep 2022 13:16:07 +0100 Colin Paice  wrote:

:>I'm very rusty ( 15+ years since I last used this) ...  but can you use
:>your 31 bit code to access a symbol relating to a 31/64 bit data item?
:>I only used 31 bit, but I think I used to get a block of storage from the
:>dump with a 64 bit address into my buffer in 31 bit address.
:>You have to use the correct ESSY block.
:>I could be deluded

It has been a while, but I already had am API for the 31 bit addresses and did
not want to change the API. The 64bit call will certainly do 31 bit zero
extended addresses, but I believe the way the data is returned is different.


:>On Thu, 22 Sept 2022 at 11:55, Binyamin Dissen 
:>wrote:
:>
:>> Looking at my code:
:>>
:>> The 31bit access call is
:>>
:>>  IHBOPLTX ,+
:>>(ABDPL,  ..ABDPL+
:>>=A(ADPLSACC),..TYPE OF CALL: ACCESS STOR+
:>>MY_ADPLPACC),..ACCESS STORAGE PARM LIST +
:>>MF=(E,PLIST)
:>>  L R15,ADPLSERV LOCATE IPCS SERVICE ROUTINE
:>>  BASR  R14,R15
:>>
:>> The 64bit access call is:
:>>
:>>  IHBOPLTX ,+
:>>(ABDPL,  ..ABDPL+
:>>=A(ADPLSMAP),..TYPE OF CALL: MAP SERVICE+
:>>XMSP),   ..ACCESS STORAGE PARM LIST +
:>>MF=(E,PLIST)
:>>  L R15,ADPLSERV LOCATE IPCS SERVICE ROUTINE
:>>  BASR  R14,R15
:>>
:>> Formatting the request is left as an exercise for the OP
:>>
:>>
:>>
:>> On Wed, 21 Sep 2022 15:49:21 -0500 David Janicek 
:>> wrote:
:>>
:>> :>Hi all.  I am new to this list but I have searched the archives for an
:>> answer to my question already without any luck.
:>> :>
:>> :>I am responsible for maintaining an IBM IPCS VERBX (verb exit) that
:>> analyzes our application dumps and points out any inconsistencies in it.
:>> We are in the process of moving some of our data above the bar (ATB) and I
:>> need to update the VERBX to analyze that data.  Unfortunately the IBM doc
:>> has virtually nothing on how to access 64bit storage in an IPCS dump via a
:>> VERBX.  I searched the internet and the only clue I found was a 7 year old
:>> post on this site by Don Poitras.  He listed a routine in C that would
:>> access 64bit (and 31bit) storage.  I have tried to mimic that code in
:>> assembler but I haven't gotten it to work yet.  I am posting my code at the
:>> end of this listing.  My hope is that someone will either point out the
:>> error of my ways or, instead, simply post their code that does the same
:>> thing.  When I attempt to access 64bit storage, I get the following
:>> messages:
:>> :>
:>> :>Dump analysis will be incomplete.
:>> :>  XSSP passed by exit PLATFORM is not valid.
:>> :>  Equate Symbol record failed consistency check.
:>> :>
:>> :>Here's my code that I'm using.  Thanks in advance for your time on this.
:>> :>
:>> :>
:>> :>Access64BitBlock Entry ,
:>> :>*
:>> :> Lmg   R2,R3,0(R1) -> storage address and length to get
:>> :>*
:>> :> Cli   WS_Es64,0   have we initialized storage yet?
:>> :> Jne   Access64BitBlock100 Yes->Don't do it again
:>> :>*
:>> :> LaR14,WS_Es64 Copy
:>> :> LaR15,WS_Es64$  skeleton
:>> :> LaR0,C_Es64   to
:>> :> Lgr   R1,R15working
:>> :> Mvcl  R14,R0  storage
:>> :>*
:>> :> Mvc   WS_Es64AST,=Al2(ZZZASTCV) CPU ASID
:>> :> Lgf   R0,WS_SSAsidSet owning
:>> :> StR0,WS_Es64AS1 asid
:>> :> Mvi   WS_Es64DTY,ZZZDTYU  Set as area
:>> :>*
:>> :> Mvc   WS_Xs64(WS_Xs64$),C_Xs64 copy skeleton
:>> :> OiWS_Xs64PFL1,WS_Xs64BIT64 Indicate 64bit
:>> :> Mvc   WS_Xs64Code,=Al2(WS_Xs64Acc) set to access storage
:>> :> Mvc   WS_Xs64Modn,C_PlatFormVar
:>> :> LaR0,WS_Es64  Link them
:>> :> StR0,WS_Xs64Esr together
:>> :>*
:>> :> CallFunc Function=StorageObtain,  +
:>> :>   Param=4096,   

Re: IPCS VERBX 64bit storage

2022-09-22 Thread Colin Paice
I'm very rusty ( 15+ years since I last used this) ...  but can you use
your 31 bit code to access a symbol relating to a 31/64 bit data item?
I only used 31 bit, but I think I used to get a block of storage from the
dump with a 64 bit address into my buffer in 31 bit address.
You have to use the correct ESSY block.
I could be deluded
Colin

On Thu, 22 Sept 2022 at 11:55, Binyamin Dissen 
wrote:

> Looking at my code:
>
> The 31bit access call is
>
>  IHBOPLTX ,+
>(ABDPL,  ..ABDPL+
>=A(ADPLSACC),..TYPE OF CALL: ACCESS STOR+
>MY_ADPLPACC),..ACCESS STORAGE PARM LIST +
>MF=(E,PLIST)
>  L R15,ADPLSERV LOCATE IPCS SERVICE ROUTINE
>  BASR  R14,R15
>
> The 64bit access call is:
>
>  IHBOPLTX ,+
>(ABDPL,  ..ABDPL+
>=A(ADPLSMAP),..TYPE OF CALL: MAP SERVICE+
>XMSP),   ..ACCESS STORAGE PARM LIST +
>MF=(E,PLIST)
>  L R15,ADPLSERV LOCATE IPCS SERVICE ROUTINE
>  BASR  R14,R15
>
> Formatting the request is left as an exercise for the OP
>
>
>
> On Wed, 21 Sep 2022 15:49:21 -0500 David Janicek 
> wrote:
>
> :>Hi all.  I am new to this list but I have searched the archives for an
> answer to my question already without any luck.
> :>
> :>I am responsible for maintaining an IBM IPCS VERBX (verb exit) that
> analyzes our application dumps and points out any inconsistencies in it.
> We are in the process of moving some of our data above the bar (ATB) and I
> need to update the VERBX to analyze that data.  Unfortunately the IBM doc
> has virtually nothing on how to access 64bit storage in an IPCS dump via a
> VERBX.  I searched the internet and the only clue I found was a 7 year old
> post on this site by Don Poitras.  He listed a routine in C that would
> access 64bit (and 31bit) storage.  I have tried to mimic that code in
> assembler but I haven't gotten it to work yet.  I am posting my code at the
> end of this listing.  My hope is that someone will either point out the
> error of my ways or, instead, simply post their code that does the same
> thing.  When I attempt to access 64bit storage, I get the following
> messages:
> :>
> :>Dump analysis will be incomplete.
> :>  XSSP passed by exit PLATFORM is not valid.
> :>  Equate Symbol record failed consistency check.
> :>
> :>Here's my code that I'm using.  Thanks in advance for your time on this.
> :>
> :>
> :>Access64BitBlock Entry ,
> :>*
> :> Lmg   R2,R3,0(R1) -> storage address and length to get
> :>*
> :> Cli   WS_Es64,0   have we initialized storage yet?
> :> Jne   Access64BitBlock100 Yes->Don't do it again
> :>*
> :> LaR14,WS_Es64 Copy
> :> LaR15,WS_Es64$  skeleton
> :> LaR0,C_Es64   to
> :> Lgr   R1,R15working
> :> Mvcl  R14,R0  storage
> :>*
> :> Mvc   WS_Es64AST,=Al2(ZZZASTCV) CPU ASID
> :> Lgf   R0,WS_SSAsidSet owning
> :> StR0,WS_Es64AS1 asid
> :> Mvi   WS_Es64DTY,ZZZDTYU  Set as area
> :>*
> :> Mvc   WS_Xs64(WS_Xs64$),C_Xs64 copy skeleton
> :> OiWS_Xs64PFL1,WS_Xs64BIT64 Indicate 64bit
> :> Mvc   WS_Xs64Code,=Al2(WS_Xs64Acc) set to access storage
> :> Mvc   WS_Xs64Modn,C_PlatFormVar
> :> LaR0,WS_Es64  Link them
> :> StR0,WS_Xs64Esr together
> :>*
> :> CallFunc Function=StorageObtain,  +
> :>   Param=4096, +
> :>   Mf=(E,WS_StorageObtainParms)
> :> StR15,WS_Xs64Buf  Save buffer address
> :>*
> :>Access64BitBlock100 Ds 0h
> :> Stg   R2,WS_Es64LAD   Set address to obtain
> :> Stg   R3,WS_Es64DLE   Set length to obtain
> :>*
> :> Sam31 ,   This call requires 31 bit amode
> :> SysState Amode64=NO
> :>*
> :> LgR4,WS_Abdpl@-> IPCS parameter area
> :> Using Abdpl,R4
> :>*
> :> L R15,AdplServ-> IPCS Service Routine
> :> Call  (15),   go get the reque

Re: IPCS VERBX 64bit storage

2022-09-22 Thread Binyamin Dissen
Looking at my code:

The 31bit access call is 

 IHBOPLTX ,+
   (ABDPL,  ..ABDPL+
   =A(ADPLSACC),..TYPE OF CALL: ACCESS STOR+
   MY_ADPLPACC),..ACCESS STORAGE PARM LIST +
   MF=(E,PLIST) 
 L R15,ADPLSERV LOCATE IPCS SERVICE ROUTINE 
 BASR  R14,R15  

The 64bit access call is:

 IHBOPLTX ,+
   (ABDPL,  ..ABDPL+
   =A(ADPLSMAP),..TYPE OF CALL: MAP SERVICE+
   XMSP),   ..ACCESS STORAGE PARM LIST +
   MF=(E,PLIST) 
 L R15,ADPLSERV LOCATE IPCS SERVICE ROUTINE 
 BASR  R14,R15  

Formatting the request is left as an exercise for the OP



On Wed, 21 Sep 2022 15:49:21 -0500 David Janicek  wrote:

:>Hi all.  I am new to this list but I have searched the archives for an answer 
to my question already without any luck.
:>
:>I am responsible for maintaining an IBM IPCS VERBX (verb exit) that analyzes 
our application dumps and points out any inconsistencies in it.  We are in the 
process of moving some of our data above the bar (ATB) and I need to update the 
VERBX to analyze that data.  Unfortunately the IBM doc has virtually nothing on 
how to access 64bit storage in an IPCS dump via a VERBX.  I searched the 
internet and the only clue I found was a 7 year old post on this site by Don 
Poitras.  He listed a routine in C that would access 64bit (and 31bit) storage. 
 I have tried to mimic that code in assembler but I haven't gotten it to work 
yet.  I am posting my code at the end of this listing.  My hope is that someone 
will either point out the error of my ways or, instead, simply post their code 
that does the same thing.  When I attempt to access 64bit storage, I get the 
following messages:
:>
:>Dump analysis will be incomplete. 
:>  XSSP passed by exit PLATFORM is not valid.  
:>  Equate Symbol record failed consistency check.  
:>
:>Here's my code that I'm using.  Thanks in advance for your time on this.
:>
:>
:>Access64BitBlock Entry ,
:>*   
:> Lmg   R2,R3,0(R1) -> storage address and length to get 
:>*   
:> Cli   WS_Es64,0   have we initialized storage yet? 
:> Jne   Access64BitBlock100 Yes->Don't do it again   
:>*   
:> LaR14,WS_Es64 Copy 
:> LaR15,WS_Es64$  skeleton
:> LaR0,C_Es64   to   
:> Lgr   R1,R15working
:> Mvcl  R14,R0  storage  
:>*
:> Mvc   WS_Es64AST,=Al2(ZZZASTCV) CPU ASID   
:> Lgf   R0,WS_SSAsidSet owning   
:> StR0,WS_Es64AS1 asid
:> Mvi   WS_Es64DTY,ZZZDTYU  Set as area  
:>*
:> Mvc   WS_Xs64(WS_Xs64$),C_Xs64 copy skeleton   
:> OiWS_Xs64PFL1,WS_Xs64BIT64 Indicate 64bit   
:> Mvc   WS_Xs64Code,=Al2(WS_Xs64Acc) set to access storage   
:> Mvc   WS_Xs64Modn,C_PlatFormVar
:> LaR0,WS_Es64  Link them
:> StR0,WS_Xs64Esr together   
:>*
:> CallFunc Function=StorageObtain,  +
:>   Param=4096, +
:>   Mf=(E,WS_StorageObtainParms)  
:> StR15,WS_Xs64Buf  Save buffer address  
:>*   
:>Access64BitBlock100 Ds 0h   

Re: IPCS VERBX 64bit storage

2022-09-21 Thread Mike Schwab
https://www.ibm.com/docs/en/zos/2.2.0?topic=dialog-examining-64-bit-dump-data-sets

On Wed, Sep 21, 2022 at 3:59 PM David Janicek  wrote:
>
> Hi all.  I am new to this list but I have searched the archives for an answer 
> to my question already without any luck.
>
> I am responsible for maintaining an IBM IPCS VERBX (verb exit) that analyzes 
> our application dumps and points out any inconsistencies in it.  We are in 
> the process of moving some of our data above the bar (ATB) and I need to 
> update the VERBX to analyze that data.  Unfortunately the IBM doc has 
> virtually nothing on how to access 64bit storage in an IPCS dump via a VERBX. 
>  I searched the internet and the only clue I found was a 7 year old post on 
> this site by Don Poitras.  He listed a routine in C that would access 64bit 
> (and 31bit) storage.  I have tried to mimic that code in assembler but I 
> haven't gotten it to work yet.  I am posting my code at the end of this 
> listing.  My hope is that someone will either point out the error of my ways 
> or, instead, simply post their code that does the same thing.  When I attempt 
> to access 64bit storage, I get the following messages:
>
> Dump analysis will be incomplete.
>   XSSP passed by exit PLATFORM is not valid.
>   Equate Symbol record failed consistency check.
>
> Here's my code that I'm using.  Thanks in advance for your time on this.
>
>
> Access64BitBlock Entry ,
> *
>  Lmg   R2,R3,0(R1) -> storage address and length to get
> *
>  Cli   WS_Es64,0   have we initialized storage yet?
>  Jne   Access64BitBlock100 Yes->Don't do it again
> *
>  LaR14,WS_Es64 Copy
>  LaR15,WS_Es64$  skeleton
>  LaR0,C_Es64   to
>  Lgr   R1,R15working
>  Mvcl  R14,R0  storage
> *
>  Mvc   WS_Es64AST,=Al2(ZZZASTCV) CPU ASID
>  Lgf   R0,WS_SSAsidSet owning
>  StR0,WS_Es64AS1 asid
>  Mvi   WS_Es64DTY,ZZZDTYU  Set as area
> *
>  Mvc   WS_Xs64(WS_Xs64$),C_Xs64 copy skeleton
>  OiWS_Xs64PFL1,WS_Xs64BIT64 Indicate 64bit
>  Mvc   WS_Xs64Code,=Al2(WS_Xs64Acc) set to access storage
>  Mvc   WS_Xs64Modn,C_PlatFormVar
>  LaR0,WS_Es64  Link them
>  StR0,WS_Xs64Esr together
> *
>  CallFunc Function=StorageObtain,  +
>Param=4096, +
>Mf=(E,WS_StorageObtainParms)
>  StR15,WS_Xs64Buf  Save buffer address
> *
> Access64BitBlock100 Ds 0h
>  Stg   R2,WS_Es64LAD   Set address to obtain
>  Stg   R3,WS_Es64DLE   Set length to obtain
> *
>  Sam31 ,   This call requires 31 bit amode
>  SysState Amode64=NO
> *
>  LgR4,WS_Abdpl@-> IPCS parameter area
>  Using Abdpl,R4
> *
>  L R15,AdplServ-> IPCS Service Routine
>  Call  (15),       go get the requested storage+
>(Abdpl,=A(AdplSSym),WS_Xs64),   +
>Mf=(E,WS_P64Parms)
> *
>  Sam64 ,   Get back in 64bit mode
>  SysState Amode64=YES
>  Drop  R4
> *
>  Ltr   R15,R15 Did it work?
>  Llgt  R15,WS_Xs64Buf  -> returned storage
>  JzAccess64BitBlockContinue if successful
>  Sgr   R15,R15 Indicate storage not found
> Access64BitBlock900 Ds 0h
> *
>  Exit  ,
> *
> C_Es64   BlsrEssy Dsect=NO,ABITS=64
> C_Xs64   BlsrXssp Dsect=NO
> *
>  BeginWS ,
> *
>  SysState Amode64=NO
> WS_P64Parms Call ,(,,),Mf=L
>  SysState Amode64=YES
> *
> WS_Es64  BlsrEssy Dsect=NO,ABITS=64
> WS_Es64$ Equ   *-WS_Es64
> WS_Xs64  BlsrXssp Dsect=NO
> WS_Xs64$ Equ   *-WS_Xs64
> *
>  EndWS ,
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN



-- 
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?

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


Re: IPCS VERBX 64bit storage

2022-09-21 Thread Jim Mulder
https://listserv.ua.edu/cgi-bin/wa?A2=ind2111=IBM-MAIN=R28794=O14039FAB4B2233B763=d10jhm1%40us.ibm.com

Jim Mulder z/OS Diagnosis, Design, Development, Test  IBM Corp. Poughkeepsie NY

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
David Janicek
Sent: Wednesday, September 21, 2022 4:49 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: IPCS VERBX 64bit storage

Hi all.  I am new to this list but I have searched the archives for an answer 
to my question already without any luck.

I am responsible for maintaining an IBM IPCS VERBX (verb exit) that analyzes 
our application dumps and points out any inconsistencies in it.  We are in the 
process of moving some of our data above the bar (ATB) and I need to update the 
VERBX to analyze that data.  Unfortunately the IBM doc has virtually nothing on 
how to access 64bit storage in an IPCS dump via a VERBX.  I searched the 
internet and the only clue I found was a 7 year old post on this site by Don 
Poitras.  He listed a routine in C that would access 64bit (and 31bit) storage. 
 I have tried to mimic that code in assembler but I haven't gotten it to work 
yet.  I am posting my code at the end of this listing.  My hope is that someone 
will either point out the error of my ways or, instead, simply post their code 
that does the same thing.  When I attempt to access 64bit storage, I get the 
following messages:

Dump analysis will be incomplete. 
  XSSP passed by exit PLATFORM is not valid.  
  Equate Symbol record failed consistency check.  

Here's my code that I'm using.  Thanks in advance for your time on this.

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


IPCS VERBX 64bit storage

2022-09-21 Thread David Janicek
Hi all.  I am new to this list but I have searched the archives for an answer 
to my question already without any luck.

I am responsible for maintaining an IBM IPCS VERBX (verb exit) that analyzes 
our application dumps and points out any inconsistencies in it.  We are in the 
process of moving some of our data above the bar (ATB) and I need to update the 
VERBX to analyze that data.  Unfortunately the IBM doc has virtually nothing on 
how to access 64bit storage in an IPCS dump via a VERBX.  I searched the 
internet and the only clue I found was a 7 year old post on this site by Don 
Poitras.  He listed a routine in C that would access 64bit (and 31bit) storage. 
 I have tried to mimic that code in assembler but I haven't gotten it to work 
yet.  I am posting my code at the end of this listing.  My hope is that someone 
will either point out the error of my ways or, instead, simply post their code 
that does the same thing.  When I attempt to access 64bit storage, I get the 
following messages:

Dump analysis will be incomplete. 
  XSSP passed by exit PLATFORM is not valid.  
  Equate Symbol record failed consistency check.  

Here's my code that I'm using.  Thanks in advance for your time on this.


Access64BitBlock Entry ,
*   
 Lmg   R2,R3,0(R1) -> storage address and length to get 
*   
 Cli   WS_Es64,0   have we initialized storage yet? 
 Jne   Access64BitBlock100 Yes->Don't do it again   
*   
 LaR14,WS_Es64 Copy 
 LaR15,WS_Es64$  skeleton
 LaR0,C_Es64   to   
 Lgr   R1,R15working
 Mvcl  R14,R0  storage  
*
 Mvc   WS_Es64AST,=Al2(ZZZASTCV) CPU ASID   
 Lgf   R0,WS_SSAsidSet owning   
 StR0,WS_Es64AS1 asid
 Mvi   WS_Es64DTY,ZZZDTYU  Set as area  
*
 Mvc   WS_Xs64(WS_Xs64$),C_Xs64 copy skeleton   
 OiWS_Xs64PFL1,WS_Xs64BIT64 Indicate 64bit   
 Mvc   WS_Xs64Code,=Al2(WS_Xs64Acc) set to access storage   
 Mvc   WS_Xs64Modn,C_PlatFormVar
 LaR0,WS_Es64  Link them
 StR0,WS_Xs64Esr together   
*
 CallFunc Function=StorageObtain,  +
   Param=4096, +
   Mf=(E,WS_StorageObtainParms)  
 StR15,WS_Xs64Buf  Save buffer address  
*   
Access64BitBlock100 Ds 0h   
 Stg   R2,WS_Es64LAD   Set address to obtain
 Stg   R3,WS_Es64DLE   Set length to obtain 
*
 Sam31 ,   This call requires 31 bit amode  
 SysState Amode64=NO
*
 LgR4,WS_Abdpl@-> IPCS parameter area   
 Using Abdpl,R4 
*   
 L R15,AdplServ-> IPCS Service Routine  
 Call  (15),   go get the requested storage+
   (Abdpl,=A(AdplSSym),WS_Xs64),   +
   Mf=(E,WS_P64Parms)
*   
 Sam64 ,   Get back in 64bit mode   
 SysState Amode64=YES   
 Drop  R4
*   
 Ltr   R15,R15 Did it work? 
 Llgt  R15,WS_Xs64Buf  -> returned storage

Re: COBOL 64bit

2018-10-18 Thread Steve Thompson
Because we went to IAM to solve these problems months ago. 

Sent from my iPhone — small keyboarf, fat fungrs, stupd spell manglr. Expct 
mistaks 


> On Oct 18, 2018, at 5:33 PM, David W Noon 
> <013a910fd252-dmarc-requ...@listserv.ua.edu> wrote:
> 
> On Thu, 18 Oct 2018 15:01:33 -0400, Steve Thompson (ste...@copper.net)
> wrote about "Re: COBOL 64bit" (in
> ):
> 
> [snip]
>> Assume that this data set is a VSAM KSDS. And assume that we do random
>> access of the records, and that those records contain pricing and rules
>> for same.
> 
> Why not use a big LSR pool for that dataset? That should speed up random
> processing a treat and not use anywhere near as much memory as a full
> dataset load. The BLSR subsystem is just the ticket for situations like
> that.
> -- 
> Regards,
> 
> Dave  [RLU #314465]
> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
> david.w.n...@googlemail.com (David W Noon)
> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
> 
>  
> 
> --
> 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


Re: COBOL 64bit

2018-10-18 Thread Steve Thompson
Because the I/Os and I/O delays are such that loading it into a large table 
with key lookup in storage and the move to the buffer are done at the speed of 
light while the actual I/Os are done at the speed of sound.  So we can get a 
12hr long job (elapsed time) done in about 12% of the time. (Ok, so it is a bit 
slower than light). 

Now, if this is demand by mobile devices, we can get the info in less time than 
it takes to schedule the SSCHs for index and data reads. Thereby improving 
service using less CPU. 

Again, what the need is is incredibly similar to the exchange (C/O for a telco) 
billing process PacBell ran into circa 1992. They were able to load their 
billing table into a data space and cut their time to process their records 
from, IIRC, from ~ 30 days to about 12 hrs. You don’t want to know what the DB2 
times were. So, yes they were using KSDS before going to data space and using 
Access Registers w/ ALC programs to get to their table entries. 

Sent from my iPhone — small keyboarf, fat fungrs, stupd spell manglr. Expct 
mistaks 


> On Oct 18, 2018, at 4:33 PM, Frank Swarbrick  
> wrote:
> 
> Why do you want to load a KSDS in to storage instead of just doing random 
> access on the file?  Or am I misunderstanding?
> 
> From: IBM Mainframe Discussion List  on behalf of 
> Steve Thompson 
> Sent: Thursday, October 18, 2018 1:01 PM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: COBOL 64bit
> 
> We have run into a situation, quite recently, where we would love
> to have COBOL 6.2 to be doing 64bit storage because we need to
> load a large table (actually, we want to load a data set into
> storage).
> 
> Assume that this data set is a VSAM KSDS. And assume that we do
> random access of the records, and that those records contain
> pricing and rules for same.
> 
> [Shades of PacBell circa 1992 when they had to load into a data
> space and use access registers to get the CO-CO billing table in
> memory]
> 
> The only way there is to write ALC code to effect a local/same
> address space, data base using ATB storage and have the COBOL
> code get to it by calling the ALC code that handles it all.
> 
> Then it was pointed out that this also needed to be done in the
> CICS address spaces.
> 
> IBM missed the boat with ESA and COBOL back then, and now, I
> think they are missing the boat with COBOL NOT being able to
> provide large storage spaces.
> 
> This is yet another example of some processing style/type that we
> have been doing with our mainframes and just like Client Server,
> and Parallel Sysplex (Ok, Geographically Diverse Sysplex), some
> marketing person came up with the name of what we (customers)
> have been doing.
> 
> Is it possible to get them to catch up with their customers this
> time?
> 
> Regards,
> Steve Thompson
> 
> --
> 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


Re: COBOL 64bit

2018-10-18 Thread David W Noon
On Thu, 18 Oct 2018 15:01:33 -0400, Steve Thompson (ste...@copper.net)
wrote about "Re: COBOL 64bit" (in
):

[snip]
> Assume that this data set is a VSAM KSDS. And assume that we do random
> access of the records, and that those records contain pricing and rules
> for same.

Why not use a big LSR pool for that dataset? That should speed up random
processing a treat and not use anywhere near as much memory as a full
dataset load. The BLSR subsystem is just the ticket for situations like
that.
-- 
Regards,

Dave  [RLU #314465]
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
david.w.n...@googlemail.com (David W Noon)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

 

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


Re: COBOL 64bit

2018-10-18 Thread Frank Swarbrick
Why do you want to load a KSDS in to storage instead of just doing random 
access on the file?  Or am I misunderstanding?

From: IBM Mainframe Discussion List  on behalf of 
Steve Thompson 
Sent: Thursday, October 18, 2018 1:01 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

We have run into a situation, quite recently, where we would love
to have COBOL 6.2 to be doing 64bit storage because we need to
load a large table (actually, we want to load a data set into
storage).

Assume that this data set is a VSAM KSDS. And assume that we do
random access of the records, and that those records contain
pricing and rules for same.

[Shades of PacBell circa 1992 when they had to load into a data
space and use access registers to get the CO-CO billing table in
memory]

The only way there is to write ALC code to effect a local/same
address space, data base using ATB storage and have the COBOL
code get to it by calling the ALC code that handles it all.

Then it was pointed out that this also needed to be done in the
CICS address spaces.

IBM missed the boat with ESA and COBOL back then, and now, I
think they are missing the boat with COBOL NOT being able to
provide large storage spaces.

This is yet another example of some processing style/type that we
have been doing with our mainframes and just like Client Server,
and Parallel Sysplex (Ok, Geographically Diverse Sysplex), some
marketing person came up with the name of what we (customers)
have been doing.

Is it possible to get them to catch up with their customers this
time?

Regards,
Steve Thompson

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


AW: Re: COBOL 64bit

2018-10-18 Thread Peter Hunkeler
+1


--
Peter Hunkeler


 Von: "Farley, Peter x23353"  An:  
 IBM-MAIN@LISTSERV.UA.EDU Betreff: Re: COBOL 64bit Datum: 17.10.18, 23:29


The following is just my personal $0.02USD worth.  I speak for myself only and 
not for my employer.

Just like any other new version of the COBOL compiler, 64-bit addressing 
support must be able to be phased in, subroutine by subroutine.  Forcing all 
subroutines in a main program to become 64-bit if any one of them becomes 
64-bit is NOT acceptable.  Neither is any serious performance impact acceptable 
in mixed 64-bit-plus-31-bit programs, no matter what the starting addressing 
mode may be.

In other words, do NOT use XPLINK for 64-bit COBOL.  Find a better way that is 
far more compatible with current static and dynamic calling conventions.

For one specific example, many (if not most) large z/OS shops have shop-wide 
application subroutines for I/O processing of application-specific files which 
all or at least many different applications in the shop use when they need to 
access those files.   If one application program needs or desires to be 
recompiled for 64-bit support, there is no way that the application-specific 
shop-wide subroutine can be allowed to be recompiled as 64-bit because then 
every other application in the shop would all have to be converted to 64-bit at 
the same time.  That can't (and won't) happen.

Keeping separate libraries and separately-compiled versions for 64-bit and 
31-bit subroutines may seem like a solution, but it is a management and SDLC 
maintenance nightmare.  COBOL V5+ forced shops to support PDSE libraries for 
production application executables, but forking that into new separate 
libraries for 31-bit and 64-bit is just not practical or feasible.  Every 
application would then have to test and maintain 2 versions of every common 
subroutine that they own, and there are no resources available to support that 
level of work.  Most of us are already running as fast as we can to stay in one 
place, with no time to spare for anything else.

Piecemeal, phased recompilation must be supported, without any serious 
performance penalties for either the newly compiled 64-bit programs or for the 
remaining 31-bit programs that are used in the same main program.

It is acceptable for all-64-bit programs to have "better" performance (FSVO 
"better"), but impacting current SLA's because one subroutine became 64-bit is 
NOT acceptable.  SLA's are already far too tight with no slack available.

IBM must not screw this up with impossible-to-implement-in-the-real-world 
conditions or performance penalties.

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Allan Kielstra
Sent: Wednesday, October 17, 2018 4:37 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

EXTERNAL EMAIL

It is only available in 31-bit.

An interesting question to ask is:  if it were available in 64-bit but mixing 
and matching 31- and 64-bit modules was not possible (i.e., you would have to 
recompile all modules in an application), would that be interesting?  Or is it 
the case that it is vital to be able to selectively compile modules (in 64-bit 
mode) and mix and match?

--


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


Re: COBOL 64bit

2018-10-18 Thread Steve Thompson
We have run into a situation, quite recently, where we would love 
to have COBOL 6.2 to be doing 64bit storage because we need to 
load a large table (actually, we want to load a data set into 
storage).


Assume that this data set is a VSAM KSDS. And assume that we do 
random access of the records, and that those records contain 
pricing and rules for same.


[Shades of PacBell circa 1992 when they had to load into a data 
space and use access registers to get the CO-CO billing table in 
memory]


The only way there is to write ALC code to effect a local/same 
address space, data base using ATB storage and have the COBOL 
code get to it by calling the ALC code that handles it all.


Then it was pointed out that this also needed to be done in the 
CICS address spaces.


IBM missed the boat with ESA and COBOL back then, and now, I 
think they are missing the boat with COBOL NOT being able to 
provide large storage spaces.


This is yet another example of some processing style/type that we 
have been doing with our mainframes and just like Client Server, 
and Parallel Sysplex (Ok, Geographically Diverse Sysplex), some 
marketing person came up with the name of what we (customers) 
have been doing.


Is it possible to get them to catch up with their customers this 
time?


Regards,
Steve Thompson

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


Re: COBOL 64bit

2018-10-18 Thread Farley, Peter x23353
Thanks for your comments and additions to the requirements for a good 64-bit 
COBOL implementation.  My opinions about multiple versions are based on 
financial industry audit requirements - NOTHING gets into production without 
testing.  Period.  Hence a dual-compile (and that would be two separate 
compiles, as I seriously doubt that one compile step can or will ever produce 
two different object outputs) and dual binds becomes very burdensome for the 
development organization when you add in the required testing.

And the testing for shop-wide common subroutines is even more burdensome for a 
dual-compile implementation.  In that case every application that uses the 
common modules has to be tested.

We don't use IMS, only DB2, but obviously if mixed 31/64-bit calling is not 
permitted (or imposes severe performance penalties) both systems would require 
64-bit interfaces along with the corresponding LE dynamic call interface.  Not 
to mention the non-IBM database systems available from various ISV's (ADABAS, 
IDMS, etc.).

Like you, we make extensive standardized use of dynamic CALL, and would also 
not look favorably on a DLL requirement.  The developer training required to 
permit conversion to DLL-style linkage would prohibit that path.  AFAIK there 
aren't many (any?) mainframe COBOL developers trained and experienced in 
creating or using COBOL DLL's.

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Frank Swarbrick
Sent: Thursday, October 18, 2018 1:27 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

Related to this, we would require a 64-bit IMS DL/I interface and 64-bit CICS 
LE application support before even considering a migration to 64-bit.  Well, I 
suppose we could leave the CICS programs 31-bit, but without IMS support for 
64-bit modules it would be pretty much useless, as almost all of our core data 
is in IMS.


From: IBM Mainframe Discussion List  on behalf of 
Frank Swarbrick 
Sent: Thursday, October 18, 2018 11:19 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

While I understand what you are saying, and mostly agree with it, I'm not sure 
I agree that having 31-bit and 64-bit versions of callable subroutines is a 
deal breaker.  It seems to me that if the compiler could generate both 31-bit 
and 64-bit objects from the same compile step, and the shop could then just 
have two program binder steps going to two different libraries.

Would there be double the testing?  Maybe at first until you get comfortable 
with the process, but after that I don't see why you'd need to test both 
versions to the same degree.  Maybe just a "smoke test" on the version you 
don't plan on using for the full test, but that's about it.

That being said, there probably would be an initial "cost" of recompiling and 
testing all sub-routines as 64-bit.  I imagine, if 31/64 calls are not allowed, 
you'd want to have a JOBLIB/STEPLIB that contains only 31-bit modules for 
31-bit run units and 64-bit modules for 64-bit run units.

My personal biggest concern, regardless of whether or not there can be combined 
31/64 bit run units, is if there ends up being some sort of requirement for DLL 
calls.  We use dynamic calls exclusively for COBOL to COBOL, and while I am a 
fan of DLLs in theory I'd be wary of a lot of source code changes being 
required to "migrate" to DLL calls.

Just one person's thoughts...
Frank


From: IBM Mainframe Discussion List  on behalf of 
Farley, Peter x23353 
Sent: Wednesday, October 17, 2018 3:29 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

The following is just my personal $0.02USD worth.  I speak for myself only and 
not for my employer.

Just like any other new version of the COBOL compiler, 64-bit addressing 
support must be able to be phased in, subroutine by subroutine.  Forcing all 
subroutines in a main program to become 64-bit if any one of them becomes 
64-bit is NOT acceptable.  Neither is any serious performance impact acceptable 
in mixed 64-bit-plus-31-bit programs, no matter what the starting addressing 
mode may be.

In other words, do NOT use XPLINK for 64-bit COBOL.  Find a better way that is 
far more compatible with current static and dynamic calling conventions.

For one specific example, many (if not most) large z/OS shops have shop-wide 
application subroutines for I/O processing of application-specific files which 
all or at least many different applications in the shop use when they need to 
access those files.   If one application program needs or desires to be 
recompiled for 64-bit support, there is no way that the application-specific 
shop-wide subroutine can be allowed to be recompiled as 64-bit because then 
every other application in the shop would all have to be converted to 64-bit at 
the same time.  That can't (and won't) happen.

Keeping separate lib

Re: COBOL 64bit

2018-10-18 Thread Frank Swarbrick
Related to this, we would require a 64-bit IMS DL/I interface and 64-bit CICS 
LE application support before even considering a migration to 64-bit.  Well, I 
suppose we could leave the CICS programs 31-bit, but without IMS support for 
64-bit modules it would be pretty much useless, as almost all of our core data 
is in IMS.


From: IBM Mainframe Discussion List  on behalf of 
Frank Swarbrick 
Sent: Thursday, October 18, 2018 11:19 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

While I understand what you are saying, and mostly agree with it, I'm not sure 
I agree that having 31-bit and 64-bit versions of callable subroutines is a 
deal breaker.  It seems to me that if the compiler could generate both 31-bit 
and 64-bit objects from the same compile step, and the shop could then just 
have two program binder steps going to two different libraries.

Would there be double the testing?  Maybe at first until you get comfortable 
with the process, but after that I don't see why you'd need to test both 
versions to the same degree.  Maybe just a "smoke test" on the version you 
don't plan on using for the full test, but that's about it.

That being said, there probably would be an initial "cost" of recompiling and 
testing all sub-routines as 64-bit.  I imagine, if 31/64 calls are not allowed, 
you'd want to have a JOBLIB/STEPLIB that contains only 31-bit modules for 
31-bit run units and 64-bit modules for 64-bit run units.

My personal biggest concern, regardless of whether or not there can be combined 
31/64 bit run units, is if there ends up being some sort of requirement for DLL 
calls.  We use dynamic calls exclusively for COBOL to COBOL, and while I am a 
fan of DLLs in theory I'd be wary of a lot of source code changes being 
required to "migrate" to DLL calls.

Just one person's thoughts...
Frank


From: IBM Mainframe Discussion List  on behalf of 
Farley, Peter x23353 
Sent: Wednesday, October 17, 2018 3:29 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

The following is just my personal $0.02USD worth.  I speak for myself only and 
not for my employer.

Just like any other new version of the COBOL compiler, 64-bit addressing 
support must be able to be phased in, subroutine by subroutine.  Forcing all 
subroutines in a main program to become 64-bit if any one of them becomes 
64-bit is NOT acceptable.  Neither is any serious performance impact acceptable 
in mixed 64-bit-plus-31-bit programs, no matter what the starting addressing 
mode may be.

In other words, do NOT use XPLINK for 64-bit COBOL.  Find a better way that is 
far more compatible with current static and dynamic calling conventions.

For one specific example, many (if not most) large z/OS shops have shop-wide 
application subroutines for I/O processing of application-specific files which 
all or at least many different applications in the shop use when they need to 
access those files.   If one application program needs or desires to be 
recompiled for 64-bit support, there is no way that the application-specific 
shop-wide subroutine can be allowed to be recompiled as 64-bit because then 
every other application in the shop would all have to be converted to 64-bit at 
the same time.  That can't (and won't) happen.

Keeping separate libraries and separately-compiled versions for 64-bit and 
31-bit subroutines may seem like a solution, but it is a management and SDLC 
maintenance nightmare.  COBOL V5+ forced shops to support PDSE libraries for 
production application executables, but forking that into new separate 
libraries for 31-bit and 64-bit is just not practical or feasible.  Every 
application would then have to test and maintain 2 versions of every common 
subroutine that they own, and there are no resources available to support that 
level of work.  Most of us are already running as fast as we can to stay in one 
place, with no time to spare for anything else.

Piecemeal, phased recompilation must be supported, without any serious 
performance penalties for either the newly compiled 64-bit programs or for the 
remaining 31-bit programs that are used in the same main program.

It is acceptable for all-64-bit programs to have "better" performance (FSVO 
"better"), but impacting current SLA's because one subroutine became 64-bit is 
NOT acceptable.  SLA's are already far too tight with no slack available.

IBM must not screw this up with impossible-to-implement-in-the-real-world 
conditions or performance penalties.

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Allan Kielstra
Sent: Wednesday, October 17, 2018 4:37 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

EXTERNAL EMAIL

It is only available in 31-bit.

An interesting question to ask is:  if it were available in 64-bit but mixing 
and matching 31- and 64-

Re: COBOL 64bit

2018-10-18 Thread Frank Swarbrick
While I understand what you are saying, and mostly agree with it, I'm not sure 
I agree that having 31-bit and 64-bit versions of callable subroutines is a 
deal breaker.  It seems to me that if the compiler could generate both 31-bit 
and 64-bit objects from the same compile step, and the shop could then just 
have two program binder steps going to two different libraries.

Would there be double the testing?  Maybe at first until you get comfortable 
with the process, but after that I don't see why you'd need to test both 
versions to the same degree.  Maybe just a "smoke test" on the version you 
don't plan on using for the full test, but that's about it.

That being said, there probably would be an initial "cost" of recompiling and 
testing all sub-routines as 64-bit.  I imagine, if 31/64 calls are not allowed, 
you'd want to have a JOBLIB/STEPLIB that contains only 31-bit modules for 
31-bit run units and 64-bit modules for 64-bit run units.

My personal biggest concern, regardless of whether or not there can be combined 
31/64 bit run units, is if there ends up being some sort of requirement for DLL 
calls.  We use dynamic calls exclusively for COBOL to COBOL, and while I am a 
fan of DLLs in theory I'd be wary of a lot of source code changes being 
required to "migrate" to DLL calls.

Just one person's thoughts...
Frank


From: IBM Mainframe Discussion List  on behalf of 
Farley, Peter x23353 
Sent: Wednesday, October 17, 2018 3:29 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

The following is just my personal $0.02USD worth.  I speak for myself only and 
not for my employer.

Just like any other new version of the COBOL compiler, 64-bit addressing 
support must be able to be phased in, subroutine by subroutine.  Forcing all 
subroutines in a main program to become 64-bit if any one of them becomes 
64-bit is NOT acceptable.  Neither is any serious performance impact acceptable 
in mixed 64-bit-plus-31-bit programs, no matter what the starting addressing 
mode may be.

In other words, do NOT use XPLINK for 64-bit COBOL.  Find a better way that is 
far more compatible with current static and dynamic calling conventions.

For one specific example, many (if not most) large z/OS shops have shop-wide 
application subroutines for I/O processing of application-specific files which 
all or at least many different applications in the shop use when they need to 
access those files.   If one application program needs or desires to be 
recompiled for 64-bit support, there is no way that the application-specific 
shop-wide subroutine can be allowed to be recompiled as 64-bit because then 
every other application in the shop would all have to be converted to 64-bit at 
the same time.  That can't (and won't) happen.

Keeping separate libraries and separately-compiled versions for 64-bit and 
31-bit subroutines may seem like a solution, but it is a management and SDLC 
maintenance nightmare.  COBOL V5+ forced shops to support PDSE libraries for 
production application executables, but forking that into new separate 
libraries for 31-bit and 64-bit is just not practical or feasible.  Every 
application would then have to test and maintain 2 versions of every common 
subroutine that they own, and there are no resources available to support that 
level of work.  Most of us are already running as fast as we can to stay in one 
place, with no time to spare for anything else.

Piecemeal, phased recompilation must be supported, without any serious 
performance penalties for either the newly compiled 64-bit programs or for the 
remaining 31-bit programs that are used in the same main program.

It is acceptable for all-64-bit programs to have "better" performance (FSVO 
"better"), but impacting current SLA's because one subroutine became 64-bit is 
NOT acceptable.  SLA's are already far too tight with no slack available.

IBM must not screw this up with impossible-to-implement-in-the-real-world 
conditions or performance penalties.

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Allan Kielstra
Sent: Wednesday, October 17, 2018 4:37 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

EXTERNAL EMAIL

It is only available in 31-bit.

An interesting question to ask is:  if it were available in 64-bit but mixing 
and matching 31- and 64-bit modules was not possible (i.e., you would have to 
recompile all modules in an application), would that be interesting?  Or is it 
the case that it is vital to be able to selectively compile modules (in 64-bit 
mode) and mix and match?

--


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 noti

Re: COBOL 64bit

2018-10-18 Thread Charles Mills
No argument. The subject line was COBOL 64bit -- by implication AMODE 64 COBOL 
-- and so that's where my reply was coming from.

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Tom Marchant
Sent: Thursday, October 18, 2018 7:54 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

On Wed, 17 Oct 2018 15:20:44 -0700, Charles Mills wrote:

>And FWIW there is another overlapping complexity here besides AMODE 64 
>-- speaking in theory only, because there is no reality of 64-bit COBOL.

It isn't really "theory only" because it is true of assembler too.

>There are really *three* kinds of module: those that are AMODE 64, 
>those that are AMODE 31 but use and/or count on the high halves of 
>registers, and those that are "pure" 31/32-bit.

There are modules that use the high halves of registers and those that 
do not. Of those that do, some of them are AMODE(64) some of the time. 
Regardless of how a program uses the high halves of registers 2-12, 
the linkage conventions require that the program restore them before 
returning to its caller.

>The whole save area thing has gotten to be a little bit of a pile IMHO. 
>It used to be the first two commandments: thou shalt do a 
>STM 14,12,12(13) on entry and thou shalt provide an 18-word save area 
>to callees. Now I am often in doubt and have to look up the rules and 
>then I am still in doubt. How many formats of save areas are there now?

This is all documented in chapter 2 of the Assembler Services Guide. 
That chapter was extensively rewritten by Peter Relson for the z/OS 1.12 
edition of the manual, and IMO it is now quite clear.

The rules are simple.
1. When you call another program, register 13 contains the address of a 
save area that the called program will use to save your registers. The 
minimum size of that save area is whatever is required by the programs 
that you call. This is part of the called program's specifications.
2. When the caller receives control back when you return, 
o All 64 bits of General Purpose Registers 2 through 13 are unchanged 
from what they were when you received control.
o AMODE is the same as it was when you received control.
o Access Registers 2 through 13 are unchanged from what they were when 
you received control.
o ASC mode is unchanged from what it was when you received control.

-- 
Tom Marchant

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


Re: COBOL 64bit

2018-10-18 Thread Tom Marchant
On Wed, 17 Oct 2018 15:20:44 -0700, Charles Mills wrote:

>And FWIW there is another overlapping complexity here besides AMODE 64 
>-- speaking in theory only, because there is no reality of 64-bit COBOL.

It isn't really "theory only" because it is true of assembler too.

>There are really *three* kinds of module: those that are AMODE 64, 
>those that are AMODE 31 but use and/or count on the high halves of 
>registers, and those that are "pure" 31/32-bit.

There are modules that use the high halves of registers and those that 
do not. Of those that do, some of them are AMODE(64) some of the time. 
Regardless of how a program uses the high halves of registers 2-12, 
the linkage conventions require that the program restore them before 
returning to its caller.

>The whole save area thing has gotten to be a little bit of a pile IMHO. 
>It used to be the first two commandments: thou shalt do a 
>STM 14,12,12(13) on entry and thou shalt provide an 18-word save area 
>to callees. Now I am often in doubt and have to look up the rules and 
>then I am still in doubt. How many formats of save areas are there now?

This is all documented in chapter 2 of the Assembler Services Guide. 
That chapter was extensively rewritten by Peter Relson for the z/OS 1.12 
edition of the manual, and IMO it is now quite clear.

The rules are simple.
1. When you call another program, register 13 contains the address of a 
save area that the called program will use to save your registers. The 
minimum size of that save area is whatever is required by the programs 
that you call. This is part of the called program's specifications.
2. When the caller receives control back when you return, 
o All 64 bits of General Purpose Registers 2 through 13 are unchanged 
from what they were when you received control.
o AMODE is the same as it was when you received control.
o Access Registers 2 through 13 are unchanged from what they were when 
you received control.
o ASC mode is unchanged from what it was when you received control.

-- 
Tom Marchant

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


Re: COBOL 64bit

2018-10-18 Thread Charles Mills
> So fix the callee.

The usual reasons for not doing so should not apply. Any code that uses
grande instructions was by definition not written in 1972, so there should
be no "we can't find the source code, the guy who wrote it retired, we're
afraid to touch the code, ..."

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Peter Relson
Sent: Thursday, October 18, 2018 4:59 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit


Don't expect anyone else to save it, so if you really need it after you 
get started then save again in your own storage before you call someone 
else who may or may not preserve it. 


I disagree. That's what linkage conventions are for. Sure, if a callee 
fails to follow them (and fails to document its requirements so that the 
caller can know that it needs to do extra work), the caller is screwed. So 
fix the callee. 

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


Re: COBOL 64bit

2018-10-18 Thread Peter Relson

Don't expect anyone else to save it, so if you really need it after you 
get started then save again in your own storage before you call someone 
else who may or may not preserve it. 


I disagree. That's what linkage conventions are for. Sure, if a callee 
fails to follow them (and fails to document its requirements so that the 
caller can know that it needs to do extra work), the caller is screwed. So 
fix the callee. 


Must a 31-bit caller not depend on both
halves of R2-R13 being preserved by a 31-bit subroutine?

If it is truly a "subroutine" then it is owned by the caller and it is up 
to the caller to decide what its own rules are.
If it is something not owned by the caller, then any caller (31-bit or 
otherwise) must be able to depend on both halves of R2-R13 being preserved 
(whether the target is 31-bit or otherwise).

Peter Relson
z/OS Core Technology Design


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


Re: COBOL 64bit

2018-10-17 Thread Charles Mills
Nice thoughts, but I do not believe that is the rule. I believe the stated rule 
is that everyone must preserve high halves for their callers. If you break it, 
you put it back together before returning. See Peter Relson 6/14/2016 "LINK and 
high order word of R1."

> If you use it, you save it and restore it for your caller.

> save ... in your own storage before you call someone else

A safe set of advice, but it ddoes imply lots of superfluous saving: save 
before calling, even if the callee might not modify, and even if the callee 
might be saving them itself.

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Farley, Peter x23353
Sent: Wednesday, October 17, 2018 3:52 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

The simple answer to the "problem child" case is not "don't do that", but 
instead:

If you use it, you save it and restore it for your caller.  Don't expect anyone 
else to save it, so if you really need it after you get started then save again 
in your own storage before you call someone else who may or may not preserve it.

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Paul Gilmartin
Sent: Wednesday, October 17, 2018 6:38 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

On Wed, 17 Oct 2018 15:20:44 -0700, Charles Mills wrote:

>And FWIW there is another overlapping complexity here besides AMODE 64 -- 
>speaking in theory only, because there is no reality of 64-bit COBOL.
>
>... A program could be AMODE 31 but either destroy the high halves of a 
>caller's registers and/or expect a called program to preserve the high halves 
>of its registers. (There are many common uses of all 64 bits of a register 
>outside of AMODE 64.)
> 
Sounds like a "Don't do that!"  Must a 31-bit caller not depend on both
halves of R2-R13 being preserved by a 31-bit subroutine?

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


Re: COBOL 64bit

2018-10-17 Thread Farley, Peter x23353
The simple answer to the "problem child" case is not "don't do that", but 
instead:

If you use it, you save it and restore it for your caller.  Don't expect anyone 
else to save it, so if you really need it after you get started then save again 
in your own storage before you call someone else who may or may not preserve it.

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Paul Gilmartin
Sent: Wednesday, October 17, 2018 6:38 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

On Wed, 17 Oct 2018 15:20:44 -0700, Charles Mills wrote:

>And FWIW there is another overlapping complexity here besides AMODE 64 -- 
>speaking in theory only, because there is no reality of 64-bit COBOL.
>
>... A program could be AMODE 31 but either destroy the high halves of a 
>caller's registers and/or expect a called program to preserve the high halves 
>of its registers. (There are many common uses of all 64 bits of a register 
>outside of AMODE 64.)
> 
Sounds like a "Don't do that!"  Must a 31-bit caller not depend on both
halves of R2-R13 being preserved by a 31-bit subroutine?

--


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


Re: COBOL 64bit

2018-10-17 Thread Paul Gilmartin
On Wed, 17 Oct 2018 15:20:44 -0700, Charles Mills wrote:

>And FWIW there is another overlapping complexity here besides AMODE 64 -- 
>speaking in theory only, because there is no reality of 64-bit COBOL.
>
>... A program could be AMODE 31 but either destroy the high halves of a 
>caller's registers and/or expect a called program to preserve the high halves 
>of its registers. (There are many common uses of all 64 bits of a register 
>outside of AMODE 64.)
> 
Sounds like a "Don't do that!"  Must a 31-bit caller not depend on both
halves of R2-R13 being preserved by a 31-bit subroutine?

-- gil

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


Re: COBOL 64bit

2018-10-17 Thread Charles Mills
And FWIW there is another overlapping complexity here besides AMODE 64 -- 
speaking in theory only, because there is no reality of 64-bit COBOL.

There are really *three* kinds of module: those that are AMODE 64, those that 
are AMODE 31 but use and/or count on the high halves of registers, and those 
that are "pure" 31/32-bit. That middle case is a problem child. A program could 
be AMODE 31 but either destroy the high halves of a caller's registers and/or 
expect a called program to preserve the high halves of its registers. (There 
are many common uses of all 64 bits of a register outside of AMODE 64.)

The whole save area thing has gotten to be a little bit of a pile IMHO. It used 
to be the first two commandments: thou shalt do a STM 14,12,12(13) on entry and 
thou shalt provide an 18-word save area to callees. Now I am often in doubt and 
have to look up the rules and then I am still in doubt. How many formats of 
save areas are there now?

IMHO if IBM was going to go to a new linkage convention -- which in itself was 
a great idea -- they should have addressed 64-bit compatibility. I think AMODE 
64 was very much on the horizon before XPLINK ever saw the light of day. I 
would think they might have come up with a convention that was almost as 
efficient as current XPLINK(31) but provided for straightforward calling among 
the three types of programs I listed above.

Charles


-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Tom Marchant
Sent: Wednesday, October 17, 2018 2:51 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

On Wed, 17 Oct 2018 15:37:12 -0500, Allan Kielstra  wrote:

>It is only available in 31-bit.
>
>An interesting question to ask is:  if it were available in 64-bit but mixing 
>and matching 31- and 64-bit modules was not possible (i.e., you would have to 
>recompile all modules in an application), would that be interesting?  Or is it 
>the case that it is vital to be able to selectively compile modules (in 64-bit 
>mode) and mix and match?

Thank you for asking. While I was a COBOL programmer for several years, I have 
not worked in that role for decades.

AMODE(64) COBOL could be a valuable tool for for applications that could 
benefit 
from very large tables. In many cases, such a conversion could be made by 
changing 
a relatively small number of modules if they could easily interoperate between 
AMODE(31) and AMODE(64) modules.

The decision that was made that LE would support AMODE(64) only using XPLINK-64 
made such interoperability difficult and expensive.

XPLINK was invented to solve a particular problem, that C has a propensity for 
creating very small subroutines. XPLINK reduces the overhead in calling such 
subroutines somewhat. At the same time, it makes it rather expensive to call 
programs that use standard linkage. In addition, XPLINK-64 was designed in a 
way 
that makes it incompatible with 31-bit XPLINK.

COBOL programs typically do a considerable amount of I/O to data sets, often 
using GET and PUT, which require standard linkage.

If COBOL were to implement AMODE(64) in such a way that  the standard FxSA save 
areas were used, it could more easily allow the interoperability of AMODE(64) 
with AMODE(31) programs without such additional overhead.

PL/I already supports AMODE(64) to some extent, but only for applications that 
are entirely AMODE(64). The reason is XPLINK-64. As far as I know, it has not 
been adopted in any significant way, if at all.

-- 
Tom Marchant

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


Re: COBOL 64bit

2018-10-17 Thread Tom Marchant
On Wed, 17 Oct 2018 15:37:12 -0500, Allan Kielstra  wrote:

>It is only available in 31-bit.
>
>An interesting question to ask is:  if it were available in 64-bit but mixing 
>and matching 31- and 64-bit modules was not possible (i.e., you would have to 
>recompile all modules in an application), would that be interesting?  Or is it 
>the case that it is vital to be able to selectively compile modules (in 64-bit 
>mode) and mix and match?

Thank you for asking. While I was a COBOL programmer for several years, I have 
not worked in that role for decades.

AMODE(64) COBOL could be a valuable tool for for applications that could 
benefit 
from very large tables. In many cases, such a conversion could be made by 
changing 
a relatively small number of modules if they could easily interoperate between 
AMODE(31) and AMODE(64) modules.

The decision that was made that LE would support AMODE(64) only using XPLINK-64 
made such interoperability difficult and expensive.

XPLINK was invented to solve a particular problem, that C has a propensity for 
creating very small subroutines. XPLINK reduces the overhead in calling such 
subroutines somewhat. At the same time, it makes it rather expensive to call 
programs that use standard linkage. In addition, XPLINK-64 was designed in a 
way 
that makes it incompatible with 31-bit XPLINK.

COBOL programs typically do a considerable amount of I/O to data sets, often 
using GET and PUT, which require standard linkage.

If COBOL were to implement AMODE(64) in such a way that  the standard FxSA save 
areas were used, it could more easily allow the interoperability of AMODE(64) 
with AMODE(31) programs without such additional overhead.

PL/I already supports AMODE(64) to some extent, but only for applications that 
are entirely AMODE(64). The reason is XPLINK-64. As far as I know, it has not 
been adopted in any significant way, if at all.

-- 
Tom Marchant

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


Re: COBOL 64bit

2018-10-17 Thread Farley, Peter x23353
The following is just my personal $0.02USD worth.  I speak for myself only and 
not for my employer.

Just like any other new version of the COBOL compiler, 64-bit addressing 
support must be able to be phased in, subroutine by subroutine.  Forcing all 
subroutines in a main program to become 64-bit if any one of them becomes 
64-bit is NOT acceptable.  Neither is any serious performance impact acceptable 
in mixed 64-bit-plus-31-bit programs, no matter what the starting addressing 
mode may be.

In other words, do NOT use XPLINK for 64-bit COBOL.  Find a better way that is 
far more compatible with current static and dynamic calling conventions.

For one specific example, many (if not most) large z/OS shops have shop-wide 
application subroutines for I/O processing of application-specific files which 
all or at least many different applications in the shop use when they need to 
access those files.   If one application program needs or desires to be 
recompiled for 64-bit support, there is no way that the application-specific 
shop-wide subroutine can be allowed to be recompiled as 64-bit because then 
every other application in the shop would all have to be converted to 64-bit at 
the same time.  That can't (and won't) happen.

Keeping separate libraries and separately-compiled versions for 64-bit and 
31-bit subroutines may seem like a solution, but it is a management and SDLC 
maintenance nightmare.  COBOL V5+ forced shops to support PDSE libraries for 
production application executables, but forking that into new separate 
libraries for 31-bit and 64-bit is just not practical or feasible.  Every 
application would then have to test and maintain 2 versions of every common 
subroutine that they own, and there are no resources available to support that 
level of work.  Most of us are already running as fast as we can to stay in one 
place, with no time to spare for anything else.

Piecemeal, phased recompilation must be supported, without any serious 
performance penalties for either the newly compiled 64-bit programs or for the 
remaining 31-bit programs that are used in the same main program.

It is acceptable for all-64-bit programs to have "better" performance (FSVO 
"better"), but impacting current SLA's because one subroutine became 64-bit is 
NOT acceptable.  SLA's are already far too tight with no slack available.

IBM must not screw this up with impossible-to-implement-in-the-real-world 
conditions or performance penalties.

Peter

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Allan Kielstra
Sent: Wednesday, October 17, 2018 4:37 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: COBOL 64bit

EXTERNAL EMAIL

It is only available in 31-bit.

An interesting question to ask is:  if it were available in 64-bit but mixing 
and matching 31- and 64-bit modules was not possible (i.e., you would have to 
recompile all modules in an application), would that be interesting?  Or is it 
the case that it is vital to be able to selectively compile modules (in 64-bit 
mode) and mix and match?

--


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


Re: COBOL 64bit

2018-10-17 Thread Allan Kielstra
It is only available in 31-bit.

An interesting question to ask is:  if it were available in 64-bit but mixing 
and matching 31- and 64-bit modules was not possible (i.e., you would have to 
recompile all modules in an application), would that be interesting?  Or is it 
the case that it is vital to be able to selectively compile modules (in 64-bit 
mode) and mix and match?

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


COBOL 64bit

2018-10-17 Thread Lizette Koehler
Just an easy question -  does anyone know if COBOL can be 64 bit or is it still 
only 31 bit?

Lizette


Sent from EarthLink Mobile mail

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


Re: 64bit

2014-10-23 Thread Shmuel Metz (Seymour J.)
In
caarmm9rskjgk-ypgufnhowtvkpbjbykdk0cr2i3vnnrrurx...@mail.gmail.com,
on 10/21/2014
   at 11:59 AM, Tony Harminc t...@harminc.net said:

Here's the epilog code for a non-main function generated by an oldish
version of IBM C:

Doesn't the use of R1 violate the czlling convention?

00011A  051E  00413 | BALR  r1,r14
 
-- 
 Shmuel (Seymour J.) Metz, SysProg and JOAT
 ISO position; see http://patriot.net/~shmuel/resume/brief.html 
We don't care. We don't have to care, we're Congress.
(S877: The Shut up and Eat Your spam act of 2003)

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


Re: 64bit

2014-10-23 Thread Tony Harminc
On 22 October 2014 18:34, Shmuel Metz (Seymour J.)
shmuel+ibm-m...@patriot.net wrote:
Here's the epilog code for a non-main function generated by an oldish
version of IBM C:

 Doesn't the use of R1 violate the czlling convention?

It's an internal czll/rdturn, so they can do what they like.

Tony H.

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


Re: 64bit

2014-10-23 Thread John Gilmore
Tony H wrote

| It's an internal czll/rdturn, so they can
| do what they like.

Not quite.  There was[is?] an internal-to-IBM scheme for requesting
[and receiving] exceptions from programming standards which IBM PL/I
development groups used fairly often.  A cogent, chiefly technical
case had to be made for each class of exceptions, and such requests
were sometimes denied.  Anciently, these exceptions were noted in PLMs
and ELs.  In this OCO era less is known about them.

John Gilmore, Ashland, MA 01721 - USA

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


Re: 64bit

2014-10-23 Thread Bernd Oppolzer

We do this always in our site-specific startup and return macros
for ASSEMBLER programs; this way in save area trace, the program
levels already returned show up by odd return addresses. It can be of
some help in strange situations, where save area chains are partially
destroyed.

Kind regards

Bernd



Am 21.10.2014 17:42, schrieb Tom Marchant:

On Tue, 21 Oct 2014 09:29:56 -0500, Paul Gilmartin wrote:


I see in SYS1.MACLIB(RETURN):

 OI15(13),X'01'  SET RETURN INDICATION  0160

Yes, It is done after the registers are restored, and it is only if T is 
specified
after the registers to be restored.

quote
,T
Causes the control program to flag the save area used by the called
program. The low-order bit of word 4 of the save area is set to 1
after the registers have been loaded; this designates that a called
program has executed a return to its caller. Do not specify this
parameter when returning control from an exit routine.
/quote

I think that this is very old behavior. I doubt that the option is used much.



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


Re: 64bit

2014-10-23 Thread Bernd Oppolzer

Am 21.10.2014 19:53, schrieb Don Poitras:

In article caarmm9rskjgk-ypgufnhowtvkpbjbykdk0cr2i3vnnrrurx...@mail.gmail.com 
you wrote:

On 21 October 2014 10:09, Tom Marchant 
000a2a8c2020-dmarc-requ...@listserv.ua.edu wrote:

I've never seen a case where BALR is used to return to the caller.

Well... Here's the epilog code for a non-main function generated by an
oldish version of IBM C:
00010EStart of Epilog
00010E  58D0  D00400413 | L r13,4(,r13)
000112  58E0  D00C00413 | L r14,12(,r13)
000116  9824  D01C00413 | LMr2,r4,28(r13)
00011A  051E  00413 | BALR  r1,r14
00011C  0707  00413 | NOPR  7
00011E  
000120Start of Literals
000120  0100018D=F'16777613'
000124  05000194=F'83886484'
000128  0900019A=F'150995354'
00012CEnd of Literals
Why they use[d] BALR I don't know, but surely they don't plan to return to
the NOPR and the certain program check that follows. Perhaps the NOPR can
be changed to something else for debugging.
Tony H.

It's just a way to pass a parm to the library epilog routine. I would
guess that '7' just means 'normal epilog'. The library looks at what
R1+1 contains and makes various decisions based on the value.



I don't think that the BALR R1,R14 calls a library epilog routine;
the BALR R1,R14 goes back to the caller, because the return address
to the caller (after the BALR R14,R15 etc.) has been loaded from the
save area. If this should make any sense, then the caller should check
R1 just after the call ... but that's normally what R15 is meant for
(return code or function result in C).

Debugging could be one reason for establishing such a return instruction
instead of a normal BR 14 ... it would be interesting to see the compiler
options of this old compile.

Kind regards

Bernd

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


Re: 64bit

2014-10-23 Thread Bernd Oppolzer

There are several areas where LE does not agree well with the
calling conventions, as I learned them in the mid 80s.

- forward save area chaining (never done by LE, turning SYSUDUMP
save area traces useless ... we fix this in our site specific interface 
modules,
which are used between every two external module calls, be it dynamic 
linkage

or static linkage)

- the convention also implemented by SYSUDUMP, that entry points be
documented by a text which starts at EPA + 5, with a one byte length field
at EPA + 4. Today we always have x'01' and C'CEE' there; the compilers
do it this way (although not all compilers are CEE compilers), and so the
SYSUDUMP output of the save area trace, if any, looks like this:

MODULE  WAS CALLED AT EP C

which does not help in any way.

Our site specific dump routines, which replace SYSUDUMP etc.,
show at the same place the function (or CSECT) name of the programming 
language,

be it PL/1, C, (C++) or ASSEMBLER ... coming from PPA2 ...
and in certain situations the compile date. It would be very easy to get
the same information in SYSUDUMP, too, if the function prolog would
be compatible to SYSUDUMP standards, which, IMO, are part of the
linkage conventions.

BTW: these problems were not introduced with LE; they were already there
which pre-LE versions of PL/1, for example (OS-PL/1 version 2.x). I first
learned about these problems in 1991, when I started using PL/1 at my
current customer's site. From 1984 to 1991 I only did ASSEMBLER on MVS 
(then),
and I was kind of surprised in 1991, that the other languages did not 
conform

to what I understood as being system standards.

Kind regards

Bernd



Am 23.10.2014 18:16, schrieb Tony Harminc:

On 22 October 2014 18:34, Shmuel Metz (Seymour J.)
shmuel+ibm-m...@patriot.net wrote:

Here's the epilog code for a non-main function generated by an oldish
version of IBM C:

Doesn't the use of R1 violate the czlling convention?

It's an internal czll/rdturn, so they can do what they like.

Tony H.

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


Re: 64bit

2014-10-22 Thread Peter Relson
An AMODE 64 target routine often needs to edict whether it is to be 
entered by BASSM vs BASR/BALR (it cannot force that to be done, but it 
may misbehave if the edict is not followed). A  fairly typical convention 
is for the target routine to capture the caller's AMODE in R14 via BSM 
14,0 so that later it can do BSM 0,14. If the routine has preserved 64-bit 
R14, this works for all caller AMODEs. (An AMODE 64 BASR cannot be 
returned to by BSM 0,14 of the entry reg 14 without the sort of 
manipulation that BSM 14,0 does). The BSM-on-entry also can help to 
accommodate a call that might have been accomplished somewhat manually 
-- set reg 14, set reg 15, BR 15.

But this approach does not work for BASSM, because it captures the target 
routine's AMODE rather than the caller's AMODE and thus a trailing BSM 
would return in the target routine's AMODE rather than the caller's AMODE. 
For BASSM linkage, that leading BSM needs not to be done, and in the 
general case there is no way to know.

Peter Relson
z/OS Core Technology Design

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


Re: 64bit

2014-10-22 Thread John McKown
On Wed, Oct 22, 2014 at 6:46 AM, Peter Relson rel...@us.ibm.com wrote:

 An AMODE 64 target routine often needs to edict whether it is to be
 entered by BASSM vs BASR/BALR (it cannot force that to be done, but it
 may misbehave if the edict is not followed).


​I guess that using the return register to look at the preceding
instruction to ensure it is a BASSM is covered by misbehave?​ Given my
somewhat acerbic sense of humor, I would likely cause an S0C1, followed
immediately by a short character string expressing displeasure with
whomever wrote the offending calling code. Hopefully I won't be channeling
Walter (Jeff Dunham character) at the time.


-- 
The temperature of the aqueous content of an unremittingly ogled
culinary vessel will not achieve 100 degrees on the Celsius scale.

Maranatha! 
John McKown

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


Re: 64bit

2014-10-21 Thread Tom Marchant
On Fri, 17 Oct 2014 16:36:38 -0400, Don Poitras wrote:

I guess it depends what you mean by I would like to use 64bit storage
for some functions from Cobol. If the Cobol part is never going to
directly use the memory, then there's no problem in a called program
in another language using above the bar storage. Just remember to
SAM 31 before you return to Cobol (unless you use one of the calls
that automatically returns you in the correct amode.)

If you have an assembler called program, you don't need to issue SAM31 before 
returning as long as you were called with one of BASSM, BASR or BALR. In all of 
these cases the return register (R14) contains sufficient information so that 
BSM will return correctly.

-- 
Tom Marchant

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


Re: 64bit

2014-10-21 Thread Chase, John
 -Original Message-
 From: IBM Mainframe Discussion List On Behalf Of Tom Marchant
 
 On Fri, 17 Oct 2014 16:36:38 -0400, Don Poitras wrote:
 
 I guess it depends what you mean by I would like to use 64bit storage
 for some functions from Cobol. If the Cobol part is never going to
 directly use the memory, then there's no problem in a called program in
 another language using above the bar storage. Just remember to SAM 31
 before you return to Cobol (unless you use one of the calls
 that automatically returns you in the correct amode.)
 
 If you have an assembler called program, you don't need to issue SAM31 before 
 returning as long as you
 were called with one of BASSM, BASR or BALR. In all of these cases the return 
 register (R14) contains
 sufficient information so that BSM will return correctly.

But see APAR PI17184 for an instance when BSM did not return correctly.

-jc-

**
Information contained in this e-mail message and in any attachments thereto is 
confidential. If you are not the intended recipient, please destroy this 
message, delete any copies held on your systems, notify the sender immediately, 
and refrain from using or disclosing all or any part of its content to any 
other person.


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


Re: 64bit

2014-10-21 Thread Paul Gilmartin
On Tue, 21 Oct 2014 07:30:32 -0500, Tom Marchant wrote:

If you have an assembler called program, you don't need to issue SAM31 before 
returning as long as you were called with one of BASSM, BASR or BALR. In all 
of 
these cases the return register (R14) contains sufficient information so that 
BSM will return correctly.
 
How does the content of R14 distinguish between the cases:

o Caller in AMODE 24

o Caller in AMODE 64; Return Address  16MiB?

And, even, between:

o Caller in AMODE 31

o Caller in AMODE 64; 6GiB = Return Address  8GiB?

-- gil

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


Re: 64bit

2014-10-21 Thread Elardus Engelbrecht
Chase, John wrote:

But see APAR PI17184 for an instance when BSM did not return correctly. 

Curious PER, hmmm. Is that only for COBOL 5.1 programs running under CICS?

With what LE version is that APAR?

Groete / Greetings
Elardus Engelbrecht

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


Re: 64bit

2014-10-21 Thread Tom Marchant
On Tue, 21 Oct 2014 13:31:44 +, Chase, John wrote:

 From: IBM Mainframe Discussion List On Behalf Of Tom Marchant 
   
 If you have an assembler called program, you don't need to issue SAM31 
 before returning as long as you 
 were called with one of BASSM, BASR or BALR. In all of these cases the 
 return register (R14) contains 
 sufficient information so that BSM will return correctly. 

But see APAR PI17184 for an instance when BSM did not return correctly.

That's why I hedged my post the way I did. It is not at all clear to me that 
LE always used BASSM, BALR or BASR to call. The APAR information is confusing, 
at least to me.

quote
Normally this is not an issue with GOBACK, since BALR is used to return 
to the caller. However, when LE stack frame exit is introduced to the 
stack chain, the CEEHSFXA routine will get control and BSM is used to 
return to the caller instead.
/quote

I've never seen a case where BALR is used to return to the caller.
I think I may have seen where BSM is used by the caller to pass control to the 
called program. In particular, where there is an interface routine (glue 
code) 
between the calling application and the called program.

So, yes, if your program changes the AMODE after receiving control, you should 
change it back to what it was. And not just blindly set it to AMODE 31.

-- 
Tom Marchant

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


Re: 64bit

2014-10-21 Thread Tom Marchant
On Tue, 21 Oct 2014 08:49:26 -0500, Paul Gilmartin wrote:

On Tue, 21 Oct 2014 07:30:32 -0500, Tom Marchant wrote:

If you have an assembler called program, you don't need to issue SAM31 before 
returning as long as you were called with one of BASSM, BASR or BALR. In all 
of 
these cases the return register (R14) contains sufficient information so that 
BSM will return correctly.
 
How does the content of R14 distinguish between the cases:

o Caller in AMODE 24

o Caller in AMODE 64; Return Address  16MiB?

And, even, between:

o Caller in AMODE 31

o Caller in AMODE 64; 6GiB = Return Address  8GiB?

I stand corrected. BALR and BASR do not set bit 63 of the return register if in 
AMODE 64, so what I wrote earlier applies only to AMODE 24 or 31 callers using 
those instructions. BASSM always provides the correct information for BSM to 
correctly return to the calling program.

-- 
Tom Marchant

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


Re: 64bit

2014-10-21 Thread Chase, John
 -Original Message-
 From: IBM Mainframe Discussion List On Behalf Of Elardus Engelbrecht
 
 Chase, John wrote:
 
 But see APAR PI17184 for an instance when BSM did not return correctly.
 
 Curious PER, hmmm. Is that only for COBOL 5.1 programs running under CICS?

That was the situation when I opened the PMR for which the APAR was opened.  
Presumably it could have occurred in a batch program as well.
 
 With what LE version is that APAR?

z/OS 1.13 (HLE7780)

-jc-

**
Information contained in this e-mail message and in any attachments thereto is 
confidential. If you are not the intended recipient, please destroy this 
message, delete any copies held on your systems, notify the sender immediately, 
and refrain from using or disclosing all or any part of its content to any 
other person.


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


Re: 64bit

2014-10-21 Thread Paul Gilmartin
On Tue, 21 Oct 2014 09:18:52 -0500, Tom Marchant wrote:

I stand corrected. BALR and BASR do not set bit 63 of the return register if 
in 
AMODE 64, so what I wrote earlier applies only to AMODE 24 or 31 callers using 
those instructions. BASSM always provides the correct information for BSM to 
correctly return to the calling program.
  
Thanks.  I'm not up to date on my P[ro]Op reading, and was ignorant of
the bit 63 behavior.

FWIW, I see in SYS1.MACLIB(RETURN):

 OI15(13),X'01'  SET RETURN INDICATION  0160

BASSM has some minor conflict with this convention.  I doubt that
it matters.  Does anyone inspect this indication in dumps?

-- gil

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


Re: 64bit

2014-10-21 Thread Elardus Engelbrecht
Chase, John wrote: 

 Curious PER, hmmm. Is that only for COBOL 5.1 programs running under CICS? 
That was the situation when I opened the PMR for which the APAR was opened.  
Presumably it could have occurred in a batch program as well. 

Ok.
  
 With what LE version is that APAR? 
z/OS 1.13 (HLE7780) 
 
Thanks. Much better written than those hastily written 'Release level 780' in 
the APAR. I really wish those IBMers working with APARs would write the [full] 
set of programs and their releases properly.

Groete / Greetings
Elardus Engelbrecht

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


Re: 64bit

2014-10-21 Thread John Gilmore
Tom Marchant wrote:

begin extract
So, yes, if your program changes the AMODE after receiving control, you should
change it back to what it was. And not just blindly set it to AMODE 31.
/end extract

and this is supremely good generic advice.  I am hard put even to
fantasticate a situation in which it is not appropriate.

John Gilmore, Ashland, MA 01721 - USA

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


Re: 64bit

2014-10-21 Thread Tom Marchant
On Tue, 21 Oct 2014 09:29:56 -0500, Paul Gilmartin wrote:

I see in SYS1.MACLIB(RETURN):

 OI15(13),X'01'  SET RETURN INDICATION  
 0160

Yes, It is done after the registers are restored, and it is only if T is 
specified 
after the registers to be restored.

quote
,T  
Causes the control program to flag the save area used by the called 
program. The low-order bit of word 4 of the save area is set to 1   
after the registers have been loaded; this designates that a called 
program has executed a return to its caller. Do not specify this
parameter when returning control from an exit routine.  
/quote

I think that this is very old behavior. I doubt that the option is used much.

-- 
Tom Marchant

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


Re: 64bit

2014-10-21 Thread Tony Harminc
On 21 October 2014 10:09, Tom Marchant 
000a2a8c2020-dmarc-requ...@listserv.ua.edu wrote:
 I've never seen a case where BALR is used to return to the caller.

Well... Here's the epilog code for a non-main function generated by an
oldish version of IBM C:

00010EStart of Epilog
00010E  58D0  D00400413 | L r13,4(,r13)
000112  58E0  D00C00413 | L r14,12(,r13)
000116  9824  D01C00413 | LMr2,r4,28(r13)
00011A  051E  00413 | BALR  r1,r14
00011C  0707  00413 | NOPR  7
00011E  

000120Start of Literals
000120  0100018D=F'16777613'
000124  05000194=F'83886484'
000128  0900019A=F'150995354'
00012CEnd of Literals

Why they use[d] BALR I don't know, but surely they don't plan to return to
the NOPR and the certain program check that follows. Perhaps the NOPR can
be changed to something else for debugging.

Tony H.

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


Re: 64bit

2014-10-21 Thread Don Poitras
In article caarmm9rskjgk-ypgufnhowtvkpbjbykdk0cr2i3vnnrrurx...@mail.gmail.com 
you wrote:
 On 21 October 2014 10:09, Tom Marchant 
 000a2a8c2020-dmarc-requ...@listserv.ua.edu wrote:
  I've never seen a case where BALR is used to return to the caller.

 Well... Here's the epilog code for a non-main function generated by an
 oldish version of IBM C:

 00010EStart of Epilog
 00010E  58D0  D00400413 | L r13,4(,r13)
 000112  58E0  D00C00413 | L r14,12(,r13)
 000116  9824  D01C00413 | LMr2,r4,28(r13)
 00011A  051E  00413 | BALR  r1,r14
 00011C  0707  00413 | NOPR  7
 00011E  

 000120Start of Literals
 000120  0100018D=F'16777613'
 000124  05000194=F'83886484'
 000128  0900019A=F'150995354'
 00012CEnd of Literals

 Why they use[d] BALR I don't know, but surely they don't plan to return to
 the NOPR and the certain program check that follows. Perhaps the NOPR can
 be changed to something else for debugging.
 Tony H.

It's just a way to pass a parm to the library epilog routine. I would
guess that '7' just means 'normal epilog'. The library looks at what
R1+1 contains and makes various decisions based on the value. 

-- 
Don Poitras - SAS Development  -  SAS Institute Inc. - SAS Campus Drive
sas...@sas.com   (919) 531-5637Cary, NC 27513

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


Re: 64bit

2014-10-20 Thread Tom Ross
Part of the reason for going to a new backend (code generator/optimizer)
in COBOL V5.1 was that the new backend already supports AMODE 64.  This is
another step in the direction of AMODE  64 COBOL.  The first steps were
to get infrastructure in LE, get AMODE 64 support for COBOL into plan for
CICS, DB2 and DFSORT, and make sure that all of the players are playin'!
AMODE 64 COBOL is already in our plans, but it is not going to be in V5.x.

Sorry, we are working on it, but we may be too late to help you Scott!

Cheers,
TomR   COBOL is the Language of the Future! 

Scott - I think that only enterprise cobol 5.x support 64 bit natively.

Sam

On Thu, Oct 16, 2014 at 7:17 AM, Scott Ford 
0006f84450fa-dmarc-requ...@listserv.ua.edu wrote:

 All,
 I have a generalized design question. First background will help. Our
 products run as Enterprise Cobol STC, no multi-tasking, yet. We call hlasm
 subroutines. I would like to use 64bit storage for some functions from
 Cobol. Is this feasible. I think it is, where I am unclear is the call and
 binder parameters. Do I have to do anything special parameter wise ?

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


Re: 64bit

2014-10-20 Thread Scott Ford
Tom,


No problem..I want to head our products toward 64bit ..So changing our existing 
COBOL code was my first choice.

But it looks like I will head us for C or C++ with Assembler called routines. 
But I appreciate the email for sure.


Regards,

Scott

www.identityforge





From: Tom Ross
Sent: ‎Monday‎, ‎October‎ ‎20‎, ‎2014 ‎8‎:‎28‎ ‎PM
To: IBM-MAIN@LISTSERV.UA.EDU





Part of the reason for going to a new backend (code generator/optimizer)
in COBOL V5.1 was that the new backend already supports AMODE 64.  This is
another step in the direction of AMODE  64 COBOL.  The first steps were
to get infrastructure in LE, get AMODE 64 support for COBOL into plan for
CICS, DB2 and DFSORT, and make sure that all of the players are playin'!
AMODE 64 COBOL is already in our plans, but it is not going to be in V5.x.

Sorry, we are working on it, but we may be too late to help you Scott!

Cheers,
TomR   COBOL is the Language of the Future! 

Scott - I think that only enterprise cobol 5.x support 64 bit natively.

Sam

On Thu, Oct 16, 2014 at 7:17 AM, Scott Ford 
0006f84450fa-dmarc-requ...@listserv.ua.edu wrote:

 All,
 I have a generalized design question. First background will help. Our
 products run as Enterprise Cobol STC, no multi-tasking, yet. We call hlasm
 subroutines. I would like to use 64bit storage for some functions from
 Cobol. Is this feasible. I think it is, where I am unclear is the call and
 binder parameters. Do I have to do anything special parameter wise ?

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


Re: 64bit

2014-10-18 Thread Peter Relson
As I read thru the MVS Extended Addressability Guide 
I am trying to understand restrictions,

In general, you should assume that a z/OS service does not support AMODE 
64 unless it says it does.
In general, you should assume that a z/OS service that supports AMODE 64 
does not support data above 2G unless it says it does.

Peter Relson
z/OS Core Technology Design

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


Re: 64bit

2014-10-18 Thread Paul Gilmartin
On Sat, 18 Oct 2014 10:11:15 -0400, Peter Relson wrote:

In general, you should assume that a z/OS service that supports AMODE 64
does not support data above 2G unless it says it does.
 
If it does not, there's not a whole lot of rationale for (claiming to)
support AMODE 64.

-- gil

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


Re: 64bit

2014-10-18 Thread Charles Mills
It means junk that happens to be in the high 32 bits of a register won't mess 
us up.

Charles

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Paul Gilmartin
Sent: Saturday, October 18, 2014 7:35 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

On Sat, 18 Oct 2014 10:11:15 -0400, Peter Relson wrote:

In general, you should assume that a z/OS service that supports AMODE 
64 does not support data above 2G unless it says it does.
 
If it does not, there's not a whole lot of rationale for (claiming to) support 
AMODE 64.

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


Re: 64bit

2014-10-18 Thread Charles Mills
Never mind. Should not post before coffee.

Charles

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Charles Mills
Sent: Saturday, October 18, 2014 8:03 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

It means junk that happens to be in the high 32 bits of a register won't mess 
us up.

Charles

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of Paul Gilmartin
Sent: Saturday, October 18, 2014 7:35 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

On Sat, 18 Oct 2014 10:11:15 -0400, Peter Relson wrote:

In general, you should assume that a z/OS service that supports AMODE
64 does not support data above 2G unless it says it does.
 
If it does not, there's not a whole lot of rationale for (claiming to) support 
AMODE 64.

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


Re: 64bit

2014-10-18 Thread John Gilmore
Paul,

There would certainly be no rationale for having AMODE(64) if there
were no above-the-bar virtual storage.  Since, however, we do have
this storage there is sometimes a rationale for using AMODE(64) below
the bar, and the ability to invoke a facility from AMODE(64) code is
then also valuable.  It reduces the need for mode switching and its
associated prologues and epilogues, if nothing else.

John Gilmore, Ashland, MA 01721 - USA

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


Re: 64bit

2014-10-18 Thread J R
It's as much as I can do just to spell CoBOL but, as far as I can tell, it's 
not ready for prime time.  Even its most avid proponent signs off thus:  

   TomR   COBOL is the Language of the Future!

We are trapped in the present.  We cannot get to the future.  The nearest we 
can get to the future is the latest, most recent, current instance of the 
present.  Ergo, CoBOL is not for us.  

'Nuff said!  

;-)  

===

 
 Date: Thu, 16 Oct 2014 10:17:56 -0400
 From: 0006f84450fa-dmarc-requ...@listserv.ua.edu
 Subject: 64bit
 To: IBM-MAIN@LISTSERV.UA.EDU
 
 All,
 I have a generalized design question. First background will help. Our 
 products run as Enterprise Cobol STC, no multi-tasking, yet. We call hlasm 
 subroutines. I would like to use 64bit storage for some functions from Cobol. 
 Is this feasible. I think it is, where I am unclear is the call and binder 
 parameters. Do I have to do anything special parameter wise ?
 
 Thanks as always,
 
 Regards,
 
 Scott ford
 www.identityforge.com - www.idmworks.com
 from my IPAD
 
  
--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: 64bit

2014-10-18 Thread Paul Gilmartin
On Sat, 18 Oct 2014 11:16:13 -0400, John Gilmore wrote:

There would certainly be no rationale for having AMODE(64) if there
were no above-the-bar virtual storage.  Since, however, we do have
this storage there is sometimes a rationale for using AMODE(64) below
the bar, and the ability to invoke a facility from AMODE(64) code is
then also valuable.  It reduces the need for mode switching and its
associated prologues and epilogues, if nothing else.
 
Having been through this (but not to successful completion) in the
370-XA transition when I had to obtain contol blocks below the
line and add interface code below the line, and cursing IBM not for
shirking the former (which is harder), but for shirking the latter
(which is easier; they've done it at last), it was perhaps easy for me
to intend more irony than you perceived.

It's still far from the level of compatibility of being able to code
EXEC PGM=ASMA90,PARM='64-bit,...' and being able to supply
a 370 source program unmodified and letting conditional assembly
handle the compatibility.  The GET macro might test the AMODE
and generate code to interface to either a DCB or a DCBE (or in
the future a DCBG) as suitable.

C comes rather close to this with its #ifdefs, but not entirely,
as previous plies in this thread suggest.

On Fri, 17 Oct 2014 20:12:58 -0500, John McKown wrote:

Most likely not of any use to you, but have you looked at GnuCOBOL? It
was OpenCOBOL, but has been taken over by GNU / FSF as one of their
languages. It works by translating COBOL to C and then compiling the C
code. If nothing else, it might give you some ideas.
http://sourceforge.net/projects/open-cobol/ . Of course, it does not
run on z/OS, ...

I thought that was only because you haven't finished porting it.

-- gil

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


Re: 64bit

2014-10-17 Thread Peter Relson
Perhaps I misunderstood the problem.

Whether called by the system, Cobol, or anything else, an HLASM routine 
can get any storage that its authorization allows it to. That includes 
storage below the bar, above the bar, and in data spaces. The routine can 
switch in and out of any AMODE that its RMODE allows (e.g., an RMODE 31 
program better not SAM24).

The caller needs to provide parameters in the form that the HLASM routine 
wants (or conversely the HLASM routine needs to accommodate the parameters 
that the caller provides; this is probably the easier approach).

If you need the calling routine to then be able to deal with the storage 
above 2G, that's a different matter entirely.

Peter Relson
z/OS Core Technology Design

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


Re: 64bit

2014-10-17 Thread Sam Siegel
I was interpreting Scott's question as how can above-the-bar memory be used
directly by COBOL.



On Fri, Oct 17, 2014 at 5:06 AM, Peter Relson rel...@us.ibm.com wrote:

 Perhaps I misunderstood the problem.

 Whether called by the system, Cobol, or anything else, an HLASM routine
 can get any storage that its authorization allows it to. That includes
 storage below the bar, above the bar, and in data spaces. The routine can
 switch in and out of any AMODE that its RMODE allows (e.g., an RMODE 31
 program better not SAM24).

 The caller needs to provide parameters in the form that the HLASM routine
 wants (or conversely the HLASM routine needs to accommodate the parameters
 that the caller provides; this is probably the easier approach).

 If you need the calling routine to then be able to deal with the storage
 above 2G, that's a different matter entirely.

 Peter Relson
 z/OS Core Technology Design

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


Re: 64bit

2014-10-17 Thread Don Poitras
In article CAFMxNWL0GLo1kCpEMokfozjhqVBN8VyUHUON4eWxC=c5Y=8...@mail.gmail.com 
you wrote:
 I was interpreting Scott's question as how can above-the-bar memory be used
 directly by COBOL.

Which is why Peter was confused. No such support currently exists. While
there's been a lot of talk about AMODE 64 COBOL, it's not there today.

 On Fri, Oct 17, 2014 at 5:06 AM, Peter Relson rel...@us.ibm.com wrote:
  Perhaps I misunderstood the problem.
 
  Whether called by the system, Cobol, or anything else, an HLASM routine
  can get any storage that its authorization allows it to. That includes
  storage below the bar, above the bar, and in data spaces. The routine can
  switch in and out of any AMODE that its RMODE allows (e.g., an RMODE 31
  program better not SAM24).
 
  The caller needs to provide parameters in the form that the HLASM routine
  wants (or conversely the HLASM routine needs to accommodate the parameters
  that the caller provides; this is probably the easier approach).
 
  If you need the calling routine to then be able to deal with the storage
  above 2G, that's a different matter entirely.
 
  Peter Relson
  z/OS Core Technology Design

-- 
Don Poitras - SAS Development  -  SAS Institute Inc. - SAS Campus Drive
sas...@sas.com   (919) 531-5637Cary, NC 27513

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


Re: 64bit

2014-10-17 Thread Scott Ford
All,

C and C++ I know supports it , If my old eyes read correctly. Hlasm does. If I 
am just using 64bit storage to store/retrieve data that should work?

Scott ford
www.identityforge.com
from my IPAD




 On Oct 17, 2014, at 2:11 PM, Don Poitras poit...@pobox.com wrote:
 
 In article 
 CAFMxNWL0GLo1kCpEMokfozjhqVBN8VyUHUON4eWxC=c5Y=8...@mail.gmail.com you 
 wrote:
 I was interpreting Scott's question as how can above-the-bar memory be used
 directly by COBOL.
 
 Which is why Peter was confused. No such support currently exists. While
 there's been a lot of talk about AMODE 64 COBOL, it's not there today.
 
 On Fri, Oct 17, 2014 at 5:06 AM, Peter Relson rel...@us.ibm.com wrote:
 Perhaps I misunderstood the problem.
 
 Whether called by the system, Cobol, or anything else, an HLASM routine
 can get any storage that its authorization allows it to. That includes
 storage below the bar, above the bar, and in data spaces. The routine can
 switch in and out of any AMODE that its RMODE allows (e.g., an RMODE 31
 program better not SAM24).
 
 The caller needs to provide parameters in the form that the HLASM routine
 wants (or conversely the HLASM routine needs to accommodate the parameters
 that the caller provides; this is probably the easier approach).
 
 If you need the calling routine to then be able to deal with the storage
 above 2G, that's a different matter entirely.
 
 Peter Relson
 z/OS Core Technology Design
 
 -- 
 Don Poitras - SAS Development  -  SAS Institute Inc. - SAS Campus Drive
 sas...@sas.com   (919) 531-5637Cary, NC 27513
 
 --
 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


Re: 64bit

2014-10-17 Thread Don Poitras
I guess it depends what you mean by I would like to use 64bit storage 
for some functions from Cobol. If the Cobol part is never going to
directly use the memory, then there's no problem in a called program
in another language using above the bar storage. Just remember to
SAM 31 before you return to Cobol (unless you use one of the calls
that automatically returns you in the correct amode.)


In article 1dacd255-b881-4e84-b5df-129a12ce4...@yahoo.com you wrote:
 All,

 C and C++ I know supports it , If my old eyes read correctly. Hlasm does. If 
 I am just using 64bit storage to store/retrieve data that should work?

 Scott ford
 www.identityforge.com
 from my IPAD




  On Oct 17, 2014, at 2:11 PM, Don Poitras poit...@pobox.com wrote:
  
  In article 
  CAFMxNWL0GLo1kCpEMokfozjhqVBN8VyUHUON4eWxC=c5Y=8...@mail.gmail.com you 
  wrote:
  I was interpreting Scott's question as how can above-the-bar memory be used
  directly by COBOL.
  
  Which is why Peter was confused. No such support currently exists. While
  there's been a lot of talk about AMODE 64 COBOL, it's not there today.
  
  On Fri, Oct 17, 2014 at 5:06 AM, Peter Relson rel...@us.ibm.com wrote:
  Perhaps I misunderstood the problem.
  
  Whether called by the system, Cobol, or anything else, an HLASM routine
  can get any storage that its authorization allows it to. That includes
  storage below the bar, above the bar, and in data spaces. The routine can
  switch in and out of any AMODE that its RMODE allows (e.g., an RMODE 31
  program better not SAM24).
  
  The caller needs to provide parameters in the form that the HLASM routine
  wants (or conversely the HLASM routine needs to accommodate the parameters
  that the caller provides; this is probably the easier approach).
  
  If you need the calling routine to then be able to deal with the storage
  above 2G, that's a different matter entirely.

-- 
Don Poitras - SAS Development  -  SAS Institute Inc. - SAS Campus Drive
sas...@sas.com   (919) 531-5637Cary, NC 27513

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


Re: 64bit

2014-10-17 Thread Charles Mills
COBOL can talk to any legal assembler program. But it can only manipulate
data below the bar.

Scenario one: COBOL program creates records in memory and passes them to
assembler program, which does something with them that involves above the
bar memory. That will work.

Scenario two: COBOL program calls assembler code which retrieves data from
above the bar and copies it into a buffer provided by the COBOL program.
That will work.

Scenario three: COBOL program calls assembler code which finds data above
the bar and passes its address to the COBOL program. That will not work.
(Technically, that would sort-of work, but the COBOL program would have no
way of seeing the data and manipulating it. All it could do is pass the
address to some other assembler program.)

Charles

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Scott Ford
Sent: Friday, October 17, 2014 12:37 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

All,

C and C++ I know supports it , If my old eyes read correctly. Hlasm does. If
I am just using 64bit storage to store/retrieve data that should work?

Scott ford
www.identityforge.com
from my IPAD




 On Oct 17, 2014, at 2:11 PM, Don Poitras poit...@pobox.com wrote:
 
 In article
CAFMxNWL0GLo1kCpEMokfozjhqVBN8VyUHUON4eWxC=c5Y=8...@mail.gmail.com you
wrote:
 I was interpreting Scott's question as how can above-the-bar memory 
 be used directly by COBOL.
 
 Which is why Peter was confused. No such support currently exists. 
 While there's been a lot of talk about AMODE 64 COBOL, it's not there
today.
 
 On Fri, Oct 17, 2014 at 5:06 AM, Peter Relson rel...@us.ibm.com wrote:
 Perhaps I misunderstood the problem.
 
 Whether called by the system, Cobol, or anything else, an HLASM 
 routine can get any storage that its authorization allows it to. 
 That includes storage below the bar, above the bar, and in data 
 spaces. The routine can switch in and out of any AMODE that its 
 RMODE allows (e.g., an RMODE 31 program better not SAM24).
 
 The caller needs to provide parameters in the form that the HLASM 
 routine wants (or conversely the HLASM routine needs to accommodate 
 the parameters that the caller provides; this is probably the easier
approach).
 
 If you need the calling routine to then be able to deal with the 
 storage above 2G, that's a different matter entirely.
 
 Peter Relson
 z/OS Core Technology Design
 
 --
 Don Poitras - SAS Development  -  SAS Institute Inc. - SAS Campus Drive
 sas...@sas.com   (919) 531-5637Cary, NC 27513
 
 --
 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


Re: 64bit

2014-10-17 Thread Scott Ford
Charles,

The more I see the more I want/will convert the Cobol code to C or C++.  

Scott ford
www.identityforge.com
from my IPAD




 On Oct 17, 2014, at 4:46 PM, Charles Mills charl...@mcn.org wrote:
 
 COBOL can talk to any legal assembler program. But it can only manipulate
 data below the bar.
 
 Scenario one: COBOL program creates records in memory and passes them to
 assembler program, which does something with them that involves above the
 bar memory. That will work.
 
 Scenario two: COBOL program calls assembler code which retrieves data from
 above the bar and copies it into a buffer provided by the COBOL program.
 That will work.
 
 Scenario three: COBOL program calls assembler code which finds data above
 the bar and passes its address to the COBOL program. That will not work.
 (Technically, that would sort-of work, but the COBOL program would have no
 way of seeing the data and manipulating it. All it could do is pass the
 address to some other assembler program.)
 
 Charles
 
 -Original Message-
 From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
 Behalf Of Scott Ford
 Sent: Friday, October 17, 2014 12:37 PM
 To: IBM-MAIN@LISTSERV.UA.EDU
 Subject: Re: 64bit
 
 All,
 
 C and C++ I know supports it , If my old eyes read correctly. Hlasm does. If
 I am just using 64bit storage to store/retrieve data that should work?
 
 Scott ford
 www.identityforge.com
 from my IPAD
 
 
 
 
 On Oct 17, 2014, at 2:11 PM, Don Poitras poit...@pobox.com wrote:
 
 In article
 CAFMxNWL0GLo1kCpEMokfozjhqVBN8VyUHUON4eWxC=c5Y=8...@mail.gmail.com you
 wrote:
 I was interpreting Scott's question as how can above-the-bar memory 
 be used directly by COBOL.
 
 Which is why Peter was confused. No such support currently exists. 
 While there's been a lot of talk about AMODE 64 COBOL, it's not there
 today.
 
 On Fri, Oct 17, 2014 at 5:06 AM, Peter Relson rel...@us.ibm.com wrote:
 Perhaps I misunderstood the problem.
 
 Whether called by the system, Cobol, or anything else, an HLASM 
 routine can get any storage that its authorization allows it to. 
 That includes storage below the bar, above the bar, and in data 
 spaces. The routine can switch in and out of any AMODE that its 
 RMODE allows (e.g., an RMODE 31 program better not SAM24).
 
 The caller needs to provide parameters in the form that the HLASM 
 routine wants (or conversely the HLASM routine needs to accommodate 
 the parameters that the caller provides; this is probably the easier
 approach).
 
 If you need the calling routine to then be able to deal with the 
 storage above 2G, that's a different matter entirely.
 
 Peter Relson
 z/OS Core Technology Design
 
 --
 Don Poitras - SAS Development  -  SAS Institute Inc. - SAS Campus Drive
 sas...@sas.com   (919) 531-5637Cary, NC 27513
 
 --
 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


Re: 64bit

2014-10-17 Thread Charles Mills
These remarks of mine may produce some reactions ...

I have not done any 64-bit work in C/C++, but the number of this is not
available in AMODE 64 and this behaves differently in AMODE 64 notes
would give me pause. I have a requirement/enhancement that would be perfect
for above-the-bar from C++ but I am nervous about undertaking it that way
for that reason.

There seem to be in general so many unexpected interdependencies among
various C/LE options. I needed to interface to the GSK encryption. That
required POSIX(ON). All went well until final testing, when a stupid little
utility program that was supposed to be loadable from COBOL suddenly was
not. Why not? COBOL can't load a POSIX(ON) C program. Really? Really.

In addition to this sort of gotcha be aware of the inherent/documented
differences. In 32-bit C, for example, a uint and a size_t are the same
thing -- you can pass  of a size_t to a method with uint * in its
prototype; but in AMODE 64 C they are not the same thing and you cannot.

Don't get me wrong. I love XLC. Could not do what I am doing without it. But
AMODE 64 C gives me pause.

I would love to hear that I am wrong.

Charles

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Scott Ford
Sent: Friday, October 17, 2014 1:55 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

Charles,

The more I see the more I want/will convert the Cobol code to C or C++.  

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


Re: 64bit

2014-10-17 Thread Scott Ford
Charles:




I couldn't have said it any better. I also want to use 64bit as I eluded to in 
my previous note. 

As I read thru the MVS Extended Addressability Guide I am trying to understand 
restrictions, especially when you in a 

mixed Language environment. I have done a lot of looking in the LE Language 
Guide, Ref and ILC guides and see bits and pieces of 64bit examples and mixed ( 
working ) language examples. John Ehrman’s 64bit Share.org presentation was 
excellent as was Ed’s.




 I am not bashing IBM, but I don't understand why there isn't more information 
in both areas. I feel there are probably more areas. Mostly because the 
dinosaurs like us are retiring and information is being lost. 




Regards,

Scott

www.identityforge.com - www.idmworks.com








From: Charles Mills
Sent: ‎Friday‎, ‎October‎ ‎17‎, ‎2014 ‎5‎:‎19‎ ‎PM
To: IBM-MAIN@LISTSERV.UA.EDU





These remarks of mine may produce some reactions ...

I have not done any 64-bit work in C/C++, but the number of this is not
available in AMODE 64 and this behaves differently in AMODE 64 notes
would give me pause. I have a requirement/enhancement that would be perfect
for above-the-bar from C++ but I am nervous about undertaking it that way
for that reason.

There seem to be in general so many unexpected interdependencies among
various C/LE options. I needed to interface to the GSK encryption. That
required POSIX(ON). All went well until final testing, when a stupid little
utility program that was supposed to be loadable from COBOL suddenly was
not. Why not? COBOL can't load a POSIX(ON) C program. Really? Really.

In addition to this sort of gotcha be aware of the inherent/documented
differences. In 32-bit C, for example, a uint and a size_t are the same
thing -- you can pass  of a size_t to a method with uint * in its
prototype; but in AMODE 64 C they are not the same thing and you cannot.

Don't get me wrong. I love XLC. Could not do what I am doing without it. But
AMODE 64 C gives me pause.

I would love to hear that I am wrong.

Charles

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Scott Ford
Sent: Friday, October 17, 2014 1:55 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

Charles,

The more I see the more I want/will convert the Cobol code to C or C++.  

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


Re: 64bit

2014-10-17 Thread John Abell
I have just converted a large C program from 31-bit to 64-bit because MQ
Series Version 8 now supports LP64. There are 28 modules and no Metal C code
as this app runs on many different platforms.  All called assembler
subroutines, z/OS-only, are now AMODE 64 and a number do switches internally
to AMODE 31 in order to call 3rd party software that is either RMODE 24  or
31 (because of old I/O, etc.)  All this works fine at this point even
loading and walking through AMODE 31 load modules that are just DSECTs with
internal pointers to various control blocks.  The DSECT modules are also 3rd
party so we can't change them.  Calling the executables via the assembler
code requires you to use  __ptr32 in the C code for the variables to be
passed to the 3rd party code and then using only the 2nd word of each entry
in the parm list passed to the AMODE 64 assembler routine for restructuring
the parm list for the  3rd party software.  So far this is working better
than originally anticipated and was quite simple to implement.  There were
some odd changes to address the DSECT Load modules and internal blocks as
the original code worked on z/OS AMODE 31 and zLinux, multiple UNIX
environments, Wintel Linux and Windows in AMODE 64.  

John T. Abell
President
International Software Products
Tel:  800-295-7608  Ext: 224
International:  1-416-593-5578  Ext: 224
Fax:  800-295-7609
International:  1-416-593-5579

E-mail:  john.ab...@intnlsoftwareproducts.com
Web: www.ispinfo.com

This email may contain confidential and privileged material for the sole use
of the intended recipient(s). Any review, use, retention, distribution or
disclosure by others is strictly prohibited. If you are not the intended 
recipient (or authorized to receive on behalf of the named recipient),
please contact the sender by reply email and delete all copies of this
message. Also,email is susceptible to data corruption, interception, 
tampering, unauthorized amendment and viruses. We only send and receive
emails on the basis that we are not liable for any such corruption,
interception, tampering, amendment or viruses or any consequence thereof.

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Charles Mills
Sent: Friday, October 17, 2014 5:19 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

These remarks of mine may produce some reactions ...

I have not done any 64-bit work in C/C++, but the number of this is not
available in AMODE 64 and this behaves differently in AMODE 64 notes
would give me pause. I have a requirement/enhancement that would be perfect
for above-the-bar from C++ but I am nervous about undertaking it that way
for that reason.

There seem to be in general so many unexpected interdependencies among
various C/LE options. I needed to interface to the GSK encryption. That
required POSIX(ON). All went well until final testing, when a stupid little
utility program that was supposed to be loadable from COBOL suddenly was
not. Why not? COBOL can't load a POSIX(ON) C program. Really? Really.

In addition to this sort of gotcha be aware of the inherent/documented
differences. In 32-bit C, for example, a uint and a size_t are the same
thing -- you can pass  of a size_t to a method with uint * in its
prototype; but in AMODE 64 C they are not the same thing and you cannot.

Don't get me wrong. I love XLC. Could not do what I am doing without it. But
AMODE 64 C gives me pause.

I would love to hear that I am wrong.

Charles

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Scott Ford
Sent: Friday, October 17, 2014 1:55 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

Charles,

The more I see the more I want/will convert the Cobol code to C or C++.  

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


---
This email is free from viruses and malware because avast! Antivirus protection 
is active.
http://www.avast.com

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


Re: 64bit

2014-10-17 Thread John McKown
Most likely not of any use to you, but have you looked at GnuCOBOL? It
was OpenCOBOL, but has been taken over by GNU / FSF as one of their
languages. It works by translating COBOL to C and then compiling the C
code. If nothing else, it might give you some ideas.
http://sourceforge.net/projects/open-cobol/ . Of course, it does not
run on z/OS, but does on Linux and Windows. So you could try it out by
downloading something to your PC and using GnuCOBOL on it. Something
like:

cobc -std=ibm -C -fsign-ebcdic cobol-source.cbl

I actually tried this on a small number of little program from my
shop. The source compiled. I don't know if it would actually _work_
because I didn't have all the necessary file to actually run anything.

On Fri, Oct 17, 2014 at 3:55 PM, Scott Ford
0006f84450fa-dmarc-requ...@listserv.ua.edu wrote:
 Charles,

 The more I see the more I want/will convert the Cobol code to C or C++.

 Scott ford
 www.identityforge.com
 from my IPAD




 On Oct 17, 2014, at 4:46 PM, Charles Mills charl...@mcn.org wrote:

 COBOL can talk to any legal assembler program. But it can only manipulate
 data below the bar.

 Scenario one: COBOL program creates records in memory and passes them to
 assembler program, which does something with them that involves above the
 bar memory. That will work.

 Scenario two: COBOL program calls assembler code which retrieves data from
 above the bar and copies it into a buffer provided by the COBOL program.
 That will work.

 Scenario three: COBOL program calls assembler code which finds data above
 the bar and passes its address to the COBOL program. That will not work.
 (Technically, that would sort-of work, but the COBOL program would have no
 way of seeing the data and manipulating it. All it could do is pass the
 address to some other assembler program.)

 Charles

 -Original Message-
 From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
 Behalf Of Scott Ford
 Sent: Friday, October 17, 2014 12:37 PM
 To: IBM-MAIN@LISTSERV.UA.EDU
 Subject: Re: 64bit

 All,

 C and C++ I know supports it , If my old eyes read correctly. Hlasm does. If
 I am just using 64bit storage to store/retrieve data that should work?

 Scott ford
 www.identityforge.com
 from my IPAD




 On Oct 17, 2014, at 2:11 PM, Don Poitras poit...@pobox.com wrote:

 In article
 CAFMxNWL0GLo1kCpEMokfozjhqVBN8VyUHUON4eWxC=c5Y=8...@mail.gmail.com you
 wrote:
 I was interpreting Scott's question as how can above-the-bar memory
 be used directly by COBOL.

 Which is why Peter was confused. No such support currently exists.
 While there's been a lot of talk about AMODE 64 COBOL, it's not there
 today.

 On Fri, Oct 17, 2014 at 5:06 AM, Peter Relson rel...@us.ibm.com wrote:
 Perhaps I misunderstood the problem.

 Whether called by the system, Cobol, or anything else, an HLASM
 routine can get any storage that its authorization allows it to.
 That includes storage below the bar, above the bar, and in data
 spaces. The routine can switch in and out of any AMODE that its
 RMODE allows (e.g., an RMODE 31 program better not SAM24).

 The caller needs to provide parameters in the form that the HLASM
 routine wants (or conversely the HLASM routine needs to accommodate
 the parameters that the caller provides; this is probably the easier
 approach).

 If you need the calling routine to then be able to deal with the
 storage above 2G, that's a different matter entirely.

 Peter Relson
 z/OS Core Technology Design

 --
 Don Poitras - SAS Development  -  SAS Institute Inc. - SAS Campus Drive
 sas...@sas.com   (919) 531-5637Cary, NC 27513

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



-- 
There is nothing more pleasant than traveling and meeting new people!
Genghis Khan

Maranatha! 
John McKown

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


Re: 64bit

2014-10-17 Thread David Crayford

On 18/10/2014 5:19 AM, Charles Mills wrote:

In addition to this sort of gotcha be aware of the inherent/documented
differences. In 32-bit C, for example, a uint and a size_t are the same
thing -- you can pass  of a size_t to a method with uint * in its
prototype; but in AMODE 64 C they are not the same thing and you cannot.


What's uint? I can't find it in stdint.h. I can however find uint32_t, 
uint64_t etc which explicitly state the number of bits in the type 
definition name.
I always use the typedefs in stdint.h as a matter of course (cstdint for 
C++). There's also a __ptr32 definition.


The only issue I run into with 64bit C/C++ code is having to deal with 
assembler service routines that were written for 32bit. And you can't 
just recompile

with a different compiler option to make them 64bit!

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


Re: 64bit

2014-10-17 Thread Charles Mills
You're right. uchar but no uint. You got my drift.

Charles

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of David Crayford
Sent: Friday, October 17, 2014 7:30 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: 64bit

On 18/10/2014 5:19 AM, Charles Mills wrote:
 In addition to this sort of gotcha be aware of the inherent/documented 
 differences. In 32-bit C, for example, a uint and a size_t are the 
 same thing -- you can pass  of a size_t to a method with uint * in 
 its prototype; but in AMODE 64 C they are not the same thing and you
cannot.

What's uint? I can't find it in stdint.h. I can however find uint32_t,
uint64_t etc which explicitly state the number of bits in the type
definition name.
I always use the typedefs in stdint.h as a matter of course (cstdint for 
C++). There's also a __ptr32 definition.

The only issue I run into with 64bit C/C++ code is having to deal with
assembler service routines that were written for 32bit. And you can't just
recompile with a different compiler option to make them 64bit!

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


64bit

2014-10-16 Thread Scott Ford
All,
I have a generalized design question. First background will help. Our products 
run as Enterprise Cobol STC, no multi-tasking, yet. We call hlasm subroutines. 
I would like to use 64bit storage for some functions from Cobol. Is this 
feasible. I think it is, where I am unclear is the call and binder parameters. 
Do I have to do anything special parameter wise ?

Thanks as always,

Regards,

Scott ford
www.identityforge.com - www.idmworks.com
from my IPAD

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


Re: 64bit

2014-10-16 Thread Sam Siegel
Scott - I think that only enterprise cobol 5.x support 64 bit natively.

Sam

On Thu, Oct 16, 2014 at 7:17 AM, Scott Ford 
0006f84450fa-dmarc-requ...@listserv.ua.edu wrote:

 All,
 I have a generalized design question. First background will help. Our
 products run as Enterprise Cobol STC, no multi-tasking, yet. We call hlasm
 subroutines. I would like to use 64bit storage for some functions from
 Cobol. Is this feasible. I think it is, where I am unclear is the call and
 binder parameters. Do I have to do anything special parameter wise ?

 Thanks as always,

 Regards,

 Scott ford
 www.identityforge.com - www.idmworks.com
 from my IPAD

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