RECORD
Records define structured variables.
Syntax 1 (explicit record definition)
RECORD
[ ATTRIBUTES( attribute [ = "value" ] [,...] ) ]
member {
data-type
|
LIKE [dbname:]tabname.colname
}
[ ATTRIBUTES( attribute [ = "value" ] [,...] ) ]
[,...]
END RECORD
Syntax 2 (database column based record)
RECORD
[ ATTRIBUTES( attribute [ = "value" ] [,...] ) ]
LIKE [dbname:]tabname.*
- member is an identifier for a record member / field.
- data-type is a data type, a record definition, a user defined type, an array definition, a built-in class, an imported package class, or a Java class.
- dbname identifies a specific database schema file.
- tabname.colname references a column defined in the database schema file.
- tabname.* references the structure of a complete table defined in the database schema file.
- attribute is an attribute to extend the record or record member definition with properties.
- value is the value for the record definition attribute, it is optional for boolean attributes.
Usage
A record defines an ordered set of variables called members.
Each record member is defined with a specific type or in turn, structured type.
Records whose members correspond in number, order, and data type compatibility to a database table can be useful for transferring data from the database to the screen, to reports, or to functions.
DEFINE rec RECORD
cust_id INT,
cust_name VARCHAR(50),
cust_address VARCHAR(100),
...
END RECORD
In
the second form (Syntax 2), record members are created implicitly from the table
definition found in the database schema file specified by the
SCHEMA
instruction:SCHEMA stock
...
DEFINE rec RECORD LIKE customer.*
LIKE
clause, the data types
are taken from the database schema file during compilation. Make sure that the
database schema file of the development database corresponds to the production
database, otherwise the records defined in the compiled version of your programs
will not match the table structures of the production database. Statements like
SELECT * INTO record.* FROM table
would fail.record.member
). The notation record.member
refers
to an individual member of a record. The notation record.*
refers
to the entire list of record members. The notation record.first THRU
record.last
refers to a consecutive set of members.
(THROUGH
is a synonym for
THRU
):DISPLAY rec.*
CALL myfunction(rec.*)
LET rec2.* = rec3.*
...
IF rec1.* == rec2.* THEN
...
END IF
When comparing records, all members will be compared. If two members are
NULL
, the result of this member comparison results in
TRUE
.
Records can be defined with the ATTRIBUTES()
clause, to specify
meta-data information for the record. This feature is especially used when defining
records for XML-based Web Services. For more details about XML attributes, see Attributes to customize XML serialization.