Document revision date: 30 March 2001

## OpenVMS Programming Concepts Manual

Previous | Contents | Index

## E.12 RPG II Implementations

Table E-12 lists the OpenVMS data types and their corresponding RPG II data type declarations.

Table E-12 RPG II Implementations
OpenVMS Data Type | RPG II Declarations
--- | ---
access_bit_names | na
access_mode | Declare as text string of 1 byte. When using this data structure, you must interpret the ASCII contents of the string to determine access_mode.
address | L 1
address_range | Q 1
arg_list | na
ast_procedure | L 1
boolean | na
byte_signed | Declare as text string of 1 byte. When using this data structure, you must interpret the ASCII contents of the string.
byte_unsigned | Same as for byte_signed. 1
channel | W 1
char_string | TEXT STRING
complex_number | DATA STRUCTURE
cond_value | cond_value GIVNG OPCODE
context | L 1
date_time | Q 1
device_name | TEXT STRING
ef_cluster_name | TEXT STRING
ef_number | L 1
exit_handler_block | DATA STRUCTURE
fab | Implicitly generated by the compiler on your behalf. You cannot access the fab data structure from an RPG II program.
file_protection | W 1
floating_point | F D
function_code | F
identifier | L 1
io_status_block | Q
item_list_pair | DATA STRUCTURE
item_list_2 | DATA STRUCTURE
item_list_3 | DATA STRUCTURE
item_quota_list | na
lock_id | L 1
lock_status_block | DATA STRUCTURE
lock_value_block | DATA STRUCTURE
logical_name | TEXT STRING
longword_signed | L
longword_unsigned | L 1
mask_byte | Same as for byte_signed 1
mask_longword | L 1
mask_quadword | Q 1
mask_word | W 1
null_arg | na
octaword_signed | DATA STRUCTURE
octaword_unsigned | DATA STRUCTURE
page_protection | L 1
procedure | L 1
process_id | L 1
process_name | TEXT STRING
quadword_signed | Q
quadword_unsigned | Q 1
rights_holder | Q 1
rights_id | L 1
rab | Implicitly generated by the compiler on your behalf. You cannot access the rab data structure from an RPG II program.
section_id | Q 1
section_name | TEXT STRING
system_access_id | Q 1
time_name | TEXT STRING
transaction_id | DATA STRUCTURE
uic | L 1
user_arg | L 1
varying_arg | Depends on the application.
vector_byte_signed | ARRAY OF TEXT STRING
vector_byte_unsigned | ARRAY OF TEXT STRING 1
vector_longword_signed | ARRAY OF LONGWORD INTEGER (SIGNED) L
vector_longword_unsigned | RAY OF LONGWORD INTEGER L 1
vector_quadword_signed | na
vector_quadword_unsigned | na
vector_word_signed | ARRAY OF WORD INTEGER (SIGNED) W
vector_word_unsigned | ARRAY OF WORD INTEGER W 1
word_signed | W
word_unsigned | W 1

1Technically, RPG II does not support unsigned data structures. However, unsigned information may be passed using the signed equivalent, provided the contents do not exceed the range of the signed data structure.

## E.13 SCAN Implementations

Table E-13 lists the OpenVMS data types and their corresponding SCAN data type declarations.

Table E-13 SCAN Implementations
OpenVMS Data Type | SCAN Declarations
--- | ---
access_bit_name | FILL(8*32) 1
access_mode | FILL(1) 1
address | POINTER
address_range | RECORD start: POINTER, end: POINTER, END RECORD
arg_list | RECORD count: INTEGER, arg1: POINTER, ! if by reference arg2: INTEGER, ! if by value ... ! depending on needs END RECORD
ast_procedure | POINTER
boolean | BOOLEAN 2
byte_signed | FILL(1) 1
byte_unsigned | FILL(1) 1
channel | FILL(2) 1
char_string | FIXED STRING( x), where x is the length.
complex_number | FILL( x), where x is the length. 1
cond_value | INTEGER
context | INTEGER
date_time | FILL(8) 1
device_name | FIXED STRING( x), where x is the length.
ef_cluster_name | FIXED STRING( x), where x is the length.
ef_number | INTEGER
exit_handler_block | FILL( x), where x is the length. 1
fab | A FAB data type is too large a structure to include in this table (see the OpenVMS Record Management Services Reference Manual); most of the fields can be described with a SCAN record. However, fab data structures are simpler to use with less coding errors when accessed from other languages that have the record predefined.
file_protection | FILL(2) 1
floating_point | FILL( x), where x is the length. 1
function_code | INTEGER
identifier | POINTER
io_status_block | FILL(8) 1
item_list_2 | RECORD item1: FILL(8), item2: FILL(8), ... terminator: INTEGER, END RECORD 1
item_list_3 | RECORD item1: FILL(12), item2: FILL(12), ... terminator: INTEGER, END RECORD 1
item_list_pair | RECORD pair_1: RECORD ! 2 integer pair long1: INTEGER, long2: INTEGER, END RECORD, pair_2: RECORD ! integer-real pair long1: INTEGER, long2: FILL(4), END RECORD, ... ! depending on need terminator: INTEGER, END RECORD
item_quota_list | RECORD item1: RECORD type: FILL(1), value: INTEGER, END RECORD item2: RECORD type: FILL(1), value: INTEGER, END RECORD, ... terminator: FILL(1), END RECORD 1
lock_id | INTEGER
lock_status_block | RECORD status: FILL(2), reserved: FILL(2), ock_id: INTEGER, END RECORD 1
lock_value_block | FILL(16) 1
logical_name | FIXED STRING( x), where x is the length.
longword_signed | INTEGER
longword_unsigned | INTEGER
mask_byte | FILL(1) 1
mask_longword | INTEGER
mask_quadword | RECORD first_half: INTEGER, second_half: INTEGER, END RECORD
mask_word | FILL(2) 1
null_arg | Use asterisk (*) for argument.
octaword_signed | FILL(16) 1
octaword_unsigned | FILL(16) 1
page_protection | INTEGER
procedure | POINTER
process_id | INTEGER
process_name | FIXED STRING( x), where x is the length.
quadword_signed | FILL(8) 1
quadword_unsigned | FILL(8) 1
rights_holder | RECORD rights_id: INTEGER, bitmask: INTEGER, END RECORD
rights_id | INTEGER
rab | A rab data type is too large a structure to include in this table (see the OpenVMS Record Management Services Reference Manual); most of the fields can be described with a SCAN record. However, RAB data structures are simpler to use with less coding errors when accessed from other languages that have the record predefined.
second_name | FILL(8) 1
section_name | FIXED STRING( x), where x is the length.
system_access_id | FILL(8) 1
time_name | FIXED STRING( x), where x is the length.
transaction_id | FILL(16) 1
uic | INTEGER
user_arg | INTEGER
varying_arg | INTEGER
vector_byte_signed | FILL( x), where x is the length. 1
vector_byte_unsigned | FILL( x), where x is the length. 1
vector_longword_signed | FILL(4* x), where x is the length. 1
vector_longword_unsigned | FILL(4* x), where x is the length. 1
vector_quadword_signed | FILL(8* x), where x is the length. 1
vector_quadword_unsigned | FILL(8* x), where x is the length. 1
vector_word_signed | FILL(2* x), where x is the length. 1
vector_word_unsigned | FILL(2* x), where x is the length. 1
word_signed | FILL(2) 1
word_unsigned | FILL(2) 1

1FILL is a data type that can always be used. A FILL is an object between 0 and 65K bytes in length. SCAN does not interpret the contents of an object. Thus, it can be used to pass or return the object to another language that does understand the type.
2SCAN Boolean is just 1 byte.

Previous | Next | Contents | Index

| privacy and legal statement |
5841PRO_092.HTML