Numeric Data Category--Windows and UNIX
Embedded SQL/COBOL accepts the following declarations of numeric variables:
level-number data-name PIC [IS] pic-string [USAGE [IS]COMP|COMP-3
|COMP-5|DISPLAY.
level-number data-name [USAGE [IS]] INDEX.
• Use the symbol S on numeric picture strings to indicate the presence of an operational sign.
• The picture string (pic-string) of a COMP, COMP-3, or COMP-5 data item can contain only the symbols 9, S, and V in addition to the parenthesized length.
• To interact with Ingres integer‑valued objects, the picture string of a COMP, COMP‑3, COMP‑5, or DISPLAY item must describe a maximum of 10 digit positions with no scaling.
• Do not use a picture string for INDEX data items. While the preprocessor ignores such a picture string, the compiler does not allow it.
You can use any data items in the numeric category to assign and receive Ingres numeric data in database tables and forms
. However, only use non
‑scaled COMP, COMP
‑3, COMP
‑5, and DISPLAY items of 10 digit positions or less to specify simple numeric objects, such as table field row numbers
. Generally, try to use COMP data items with no scaling to interact with Ingres integer
‑valued objects, since the internal format of COMP data is compatible with Ingres integer data
. Ingres effects the necessary conversions between all numeric data types, so the use of DISPLAY and COMP
‑3 scaled data items is allowed
. For more information on type conversion, see
Data Type Conversion in this chapter.
Example: Numeric data category usage
01 QUAD-INTVAR PIC S9(10) USAGE COMP.
01 LONG-INTVAR PIC S9(9) USAGE COMP.
01 SHORT-INTVAR PIC S9(4) USAGE COMP.
01 DISPLAY-VAR PIC S9(10) USAGE DISPLAY.
01 PACKED-VAR PIC S9(12)V9(4) USAGE COMP-3.
Numeric Data Items with Usage COMP‑5--UNIX
Ingres supports data items declared with USAGE COMP‑5. When you specify this clause, the data item is stored in the same machine storage format as the native host processor rather than in the byte‑wise Micro Focus storage format. Of course, sometimes the two storage formats are identical. Since the Ingres runtime system that is linked into your COBOL runtime support module (RTS) is written in C, it is important that Ingres interact with native data types rather than Micro Focus data types. Consequently, many of your normal USAGE COMP data items are transferred (using COBOL MOVE statements) into internally declared Ingres USAGE COMP‑5 data items. Data items declared with this USAGE cause a compiler information message (209 ‑I) to occur.
Dynamic SQL requires that your program point directly at result data items
. In that case, you may be required to use USAGE COMP
‑5 data items, rather than having the option to use COMP or COMP-5
. For details on dynamic SQL, see
Dynamic Programming for COBOL in this chapter.