Data Types Supported by Expression Operands

Table 73 describes the type of operand allowed for each unary operator and the type of the result. Table 74 describes the type of operands allowed for each binary operator and the type of the result. Table 75 describes the type of operands allowed for each built-in function and the type of the result. Prototyped procedures support whatever data types are defined in the prototype definition.

Table 73. Types Supported for Unary Operations
Operation Operand Type Result Type
- (negation) Numeric Numeric
+ Numeric Numeric
NOT Indicator Indicator
Table 74. Operands Supported for Binary Operations
Operator Operand 1 Type Operand 2 Type Result Type
+ (addition) Numeric Numeric Numeric
+ (addition) Date Duration Date
+ (addition) Time Duration Time
+ (addition) Timestamp Duration Timestamp
- (subtraction) Numeric Numeric Numeric
- (subtraction) Date Duration Date
- (subtraction) Time Duration Time
- (subtraction) Timestamp Duration Timestamp
* (multiplication) Numeric Numeric Numeric
/ (division) Numeric Numeric Numeric
** (exponentiation) Numeric Numeric Numeric
+ (concatenation) Character Character Character
+ (concatenation) Graphic Graphic Graphic
+ (concatenation) UCS-2 UCS-2 UCS-2
+ (add offset to pointer) Basing Pointer Numeric Basing Pointer
- (subtract pointers) Basing Pointer Basing Pointer Numeric
- (subtract offset from pointer) Basing Pointer Numeric Basing Pointer
Note:
For the following operations the operands may be of any type, but the two operands must be of the same type.
= (equal to) Any Any Indicator
>= (greater than or equal to) Any Any Indicator
> (greater than) Any Any Indicator
<= (less than or equal to) Any Any Indicator
< (less than) Any Any Indicator
<> (not equal to) Any Any Indicator
AND (logical and) Indicator Indicator Indicator
OR (logical or) Indicator Indicator Indicator
Table 75. Types Supported for Built-in Functions
Operation Operands Result Type
%ABS Numeric Numeric
%ALLOC Numeric Pointer
%BITAND Character:character{:character...} Character
%BITAND Numeric:numeric{:numeric...} Numeric
%BITNOT Character Character
%BITNOT Numeric Numeric
%BITOR Character:character{:character...} Character
%BITOR Numeric:numeric{:numeric...} Numeric
%BITXOR Character:character Character
%BITXOR Numeric:numeric Numeric
%CHAR Graphic, Numeric, UCS-2, Date, Time or Timestamp {: Format of Date, Time, or Timestamp} Character
%CHECK Character, Graphic, or UCS-2 {: Numeric} Numeric
%CHECKR Character, Graphic, or UCS-2 {: Numeric} Numeric
%DATE {Character, Numeric, or Timestamp {: Date Format}} Date
%DAYS Numeric Numeric (duration)
%DEC Character : Numeric constant : Numeric constant Numeric (packed)
%DEC Numeric {: Numeric constant : Numeric constant} Numeric (packed)
%DEC Date, time or timestamp {: format} Numeric (packed)
%DECH Character : Numeric constant : Numeric constant Numeric (packed)
%DECH Numeric : Numeric constant : Numeric constant Numeric (packed)
%DECPOS Numeric Numeric (unsigned)
%DIFF Date, Time, or Timestamp : Date, Time, or Timestamp : Unit Numeric (duration) (compatible with both)
%DIV Numeric : Numeric Numeric
%EDITC Non-float Numeric : Character Constant of Length 1 {:*CURSYM | *ASTFILL | character currency symbol} Character (fixed length)
%EDITFLT Numeric Character (fixed length)
%EDITW Non-float Numeric : Character Constant Character (fixed length)
%EOF {File name} Indicator
%EQUAL {File name} Indicator
%ERROR Indicator
%FLOAT Character Numeric (float)
%FLOAT Numeric Numeric (float)
%FOUND {File name} Indicator
%GRAPH Character, Graphic, or UCS-2 {: ccsid} Graphic
%HOURS Numeric Numeric (duration)
%INT Character Numeric (integer)
%INT Numeric Numeric (integer)
%INTH Character Numeric (integer)
%INTH Numeric Numeric (integer)
%LEN Any Numeric (unsigned)
%LOOKUPxx Any : Any array {: Numeric {: Numeric}} Numeric (unsigned)
%MINUTES Numeric Numeric (duration)
%MONTHS Numeric Numeric (duration)
%MSECONDS Numeric Numeric (duration)
%OCCUR Multiple Occurrence Data Structure Multiple Occurrence Data Structure
%OPEN File name Indicator
%PARMS Numeric (integer)
%REALLOC Pointer : Numeric Pointer
%REM Numeric : Numeric Numeric
%REPLACE Character : Character {: Numeric {: Numeric}} Character
%REPLACE Graphic : Graphic {: Numeric {: Numeric}} Graphic
%REPLACE UCS-2 : UCS-2 {: Numeric {: Numeric}} UCS-2
%SCAN Character : Character {: Numeric} Numeric (unsigned)
%SCAN Graphic : Graphic {: Numeric} Numeric (unsigned)
%SCAN UCS-2 : UCS-2 {: Numeric} Numeric (unsigned)
%SCANRPL Character : Character : Character {: Numeric {: Numeric}} Character
%SCANRPL Graphic : Graphic : Graphic {: Numeric {: Numeric}} Graphic
%SCANRPL UCS-2 : UCS-2 : UCS-2 {: Numeric {: Numeric}} UCS-2
%SECONDS Numeric Numeric (duration)
%SHUTDOWN Indicator
%SQRT Numeric Numeric
%STATUS {File name} Numeric (zoned decimal)
%STR Basing Pointer {: Numeric} Character
Note:
When %STR appears on the left-hand side of an expression, the second operand is required.
%SUBARR Any: Numeric {:Numeric} Any (same type as first operand)
%SUBDT Date, Time, or Timestamp : Unit Numeric (unsigned)
%SUBST Character : Numeric {: Numeric} Character
%SUBST Graphic : Numeric {: Numeric} Graphic
%SUBST UCS-2 : Numeric {: Numeric} UCS-2
%THIS Object
%TIME {Character, Numeric, or Timestamp {: Time Format}} Time
%TIMESTAMP {Character, Numeric, or Date {: Timestamp Format}} Timestamp
%TLOOKUPxx Any table: Any table {: Any} Indicator
%TRIM Character { : Character } Character
%TRIM Graphic { : Graphic} Graphic
%TRIM UCS-2 { : UCS-2 } UCS-2
%TRIML Character { : Character } Character
%TRIML Graphic { : Graphic} Graphic
%TRIML UCS-2 { : UCS-2 } UCS-2
%TRIMR Character { : Character } Character
%TRIMR Graphic { : Graphic} Graphic
%TRIMR UCS-2 { : UCS-2 } UCS-2
%UCS2 Character, Graphic, or UCS-2 {: ccsid} Varying length UCS-2 value
%UNS Character Numeric (unsigned)
%UNS Numeric Numeric (unsigned)
%UNSH Character Numeric (unsigned)
%UNSH Numeric Numeric (unsigned)
%XFOOT Numeric Numeric
%XLATE Character, Graphic, or UCS-2 : Character, Graphic, or UCS-2 : Character, Graphic, or UCS-2 {: Numeric} Character, Graphic, or UCS-2
%YEARS Numeric Numeric (duration)
Note:
For the following built-in functions, arguments must be literals, named constants or variables.
%PADDR Character Procedure or prototype pointer
%SIZE Any {: *ALL} Numeric (unsigned)
Note:
For the following built-in functions, arguments must be variables. However, if an array index is specified, it may be any valid numeric expression.
%ADDR Any Basing pointer
%ELEM Any Numeric (unsigned)
%NULLIND Any Indicator
Note:
The following built-in functions are not true built-in functions in that they do not return a value. They are used in some free-form operations.
%FIELDS Any{: Any {: Any ...} Not Applicable
%HANDLER Prototype name : Any Not Applicable
%KDS Data structure {: numeric } Not Applicable
%XML Character or UCS-2 { : Character } Not Applicable


[ Top of Page | Previous Page | Next Page | Contents | Index ]