


You can compile the preceding program as is with the -Fx option, to generate the data dictionary. The compiled program will run, and will build the database table shown at the end of this section.
Here's how the database table is built. First, any fields listed in the KEY IS clause of the SELECT are included (p-o-number in this example). Then the compiler takes the largest record (p-o-detail-record), and lists the fields that make up that record. The next two pages show the specific fields that are placed into the table.
All of the data from the COBOL program is stored in and retrieved from the database, even though not all fields are explicitly named in the database table. See Chapter 3, "Data Dictionaries" for a description of how this works.
The underlined fields are the only ones that will be entered into the table:
fd p-o-file.
01 p-o-record.
03 p-o-division-number pic 9(3).
03 p-o-record-type pic x.
88 header-record value "h".
88 detail-record value "d".
03 p-o-number pic 9(10).
03 p-o-number-detail redefines p-o-number.
05 picking-ticket-number pic 9(6).
05 shipping-region pic 9(2).
05 p-o-customer-type pic 9(2).
05 p-o-customer-breakdown redefines
p-o-customer-type.
07 customer-category pic x.
88 p-o-customer-retail value "r".
88 p-o-customer-whlsale value "w".
07 customer-pay-format pic x.
88 is-net-30 value "3".
88 is-net-10 value "1".
03 p-o-date.
05 p-o-yy pic 9(2).
05 p-o-mm pic 9(2).
05 p-o-dd pic 9(2).
01 p-o-detail-record.
03 p-o-dept-number pic 9(3).
03 p-o-record-type pic x.
03 detail-p-o-number pic 9(10).
03 p-o-shipping-info.
05 p-o-quantity-to-ship pic s9(4) comp.
05 p-o-total-quantity pic s9(4) comp.
03 p-o-notes.
05 notes-line occurs 3 times pic x(40).
As the table is built:
Any hyphens in the COBOL field names are converted to underscores.
Field names longer than 18 characters will issue a warning if they are not
unique within the first 18 characters. Some databases, Informix for example,
limit you to 18 total characters. It is recommended for portability and for
end-user purposes, that you use the least amount of characters. You can use the NAME
directive for this to avoid changing your procedure division code.
Fields in OCCURS clauses get special handling, because the runtime system must assign a unique
name to each data item. So sequential index numbers are appended to the item
named in the OCCURS. Because the indexed name cannot exceed 30 (30 is the
limit for Oracle; 18 is the limit for Informix and DBMaker) characters, the name is
truncated by Acu4GL if necessary before the index is added.
| Column Name
| Type
|
| p_o_number
| number(10) *
|
| p_o_dept_number
| number(3) *
|
| p_o_record_type
| char(1)
|
| p_o_quantity_to_ship
| number(4) *
|
| p_o_total_quantity
| number(4) *
|
| notes_line_1
| char(40)
|
| notes_line_2
| char(40)
|
| notes_line_3
| char(40) |
See the "Limits and Ranges" section found in the appendix specific to your RDBMS for a list of supported data types and their COBOL equivalents.