64 bits is 64 bits whether the high bit is a sign or part of the number. 
Loading 64 bits into a register loads 64 bits unaltered. The high bit becomes 
the high bit, 0 or 1.

As @Gary says, it only matters when the sending field is smaller than the 
receiving register. (And then only when the sign bit is 1; a negative number 
IOW.)

An LG of X'87654321' into a register gives you FFFFFFFF87654321. An LLG gives 
you 0000000087654321. If the source is X'01234567' then either instruction 
gives you the same result.

LH and LB also do sign extension. ICM and IC do not.

Charles


-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On 
Behalf Of Gary Weinhold
Sent: Thursday, April 28, 2022 3:00 PM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: Unsigned 64-bit numbers

When loading 8 bytes into an 64-bit register, you needn't worry about 
logical vs. arithmetic.  The sign only makes a difference if it's less 
than a doubleword being loaded.  An LG will load it..

On 2022-04-28 5:20 p.m., Schmitt, Michael wrote:
> How did you do it in COBOL?
>
> 
Gary Weinhold
Senior Application Architect
DATAKINETICS | Data Performance & Optimization
Phone:+1.613.523.5500 x216
Email: weinh...@dkl.com
Visit us online at www.DKL.com
E-mail Notification: The information contained in this email and any 
attachments is confidential and may be subject to copyright or other 
intellectual property protection. If you are not the intended recipient, you 
are not authorized to use or disclose this information, and we request that you 
notify us by reply mail or telephone and delete the original message from your 
mail system. 


-----Original Message-----
> From: IBM Mainframe Assembler List<ASSEMBLER-LIST@LISTSERV.UGA.EDU>  On 
> Behalf Of Dave Clark
> Sent: Tuesday, February 1, 2022 11:39 AM
> To:ASSEMBLER-LIST@LISTSERV.UGA.EDU
> Subject: Unsigned 64-bit numbers
>
>          I previously asked about 32-bit unsigned numbers and that opened up 
> some new instructions (new to me, anyway: LLGF, LLGH, etc) for loading 
> unsigned numbers into registers.  But now I have need to load a 64-bit 
> unsigned value into a register and I don't see an LLGD instruction for that.
>
>          In case it makes a difference, this value is a timestamp (presumably 
> from the store-clock instruction) but it is stored in an 8-byte file field.  
> Now I need to take the file field and turn it into a date and a time value.  
> I have done this in REXX and COBOL but now I need to do it in assembler.  
> Actually, I have done something similar in assembler but it was for the CICS 
> ABSTIME value -- which is a 15-digit packed number, not binary.
>
>          So, any hints?  Thanks.
>
> Sincerely,
>
> Dave Clark
> --
>
> 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.

Reply via email to