pTAL Reference Manual (G06.24+, H06.09+, J06.03+)

p64a := $PROCADDR (pa);
p64a := $PROCADDR (p32a);
END;
NOTE: PROC32ADDR, PROC64ADDR, PROC32PTR, and PROC64PTR are 64-bit addressing
functionality added to the EpTAL compiler starting with SPR T0561H01^AAP. For more information,
see Appendix E, “64-bit Addressing Functionality” (page 531).
Subprocedures, Subprocedure Entry Points, Labels, and Read-Only Arrays (CBADDR
and CWADDR Address Types)
The address type of a pointer to code in a user code segment—that is, a read-only array—is
CWADDR if the pointer is type INT and is CBADDR if the pointer is type STRING. The address
type of subprocedures, subprocedure entry points, and all labels—in both procedures and
subprocedures—is CWADDR.
Example 108 CBADDR and CWADDR
INT sa = 'P' := [1,2,3,4]; ! Address type of sa is CWADDR
STRING sb = 'P' := ["ABCD"]; ! Address type of sb is CBADDR
PROC p;
BEGIN
LABEL lab1;
SUBPROC subp1;
BEGIN
CWADDR cw;
CBADDR cb;
ENTRY ent1;
ent1:
lab2:
cw := @subp1; ! Address type of @subp1 is CWADDR
cw := @lab1; ! Address type of @lab1 is CWADDR
cw := @lab2; ! Address type of @lab2 is CWADDR
cw := @ent1; ! Address type of @ent1 is CWADDR
cw := @sa; ! Address type of @sa is CWADDR
cb := @sb; ! Address type of @sb is CBADDR
END;
lab1:
END;
EXTADDR, EXT32ADDR, and EXT64ADDR (Extended Addresses)
An EXTADDR is 32 bits. You can store the address of any of your processes’ 32-bit addressable
data in an EXTADDR pointer. An EXT64ADDR is 64 bits. You can store the address of any of your
processes' data in an EXT64ADDR pointer.
Address Types 169