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