使用下列示例来帮助您了解 COBOL 和 PL/I 数组定义,以便可以正确地映射表和视图。
在数据服务器上创建关系表或视图时,Classic Data Architect 将使用 COBOL 副本或 PL/I 包含文件中包括的数据定义来生成数据定义语言(DDL)。然后,可在数据服务器上运行 DDL 以在元数据目录中创建用户表。
示例:固定长度数组的 COBOL 定义。
01 EMPLOYEE-RECORD. 05 EMP-LAST-NAME PIC X(20). 05 EMP-FIRST-NAME PIC X(20). 05 EMPID PIC 9(9). .... 05 DEPENDENTS-ARRAY OCCURS 20 TIMES 10 DEP-ID PIC 9(9). 10 DEP-NAME PIC X(20). 10 DEP-DOB PIC 9(6). 10 DEP-RELATIONSHIP-TO-EMPL PIC X.
示例:可变长度数组的 COBOL 定义。
01 EMPLOYEE-RECORD. 05 EMP-LAST-NAME PIC X(20). 05 EMP-FIRST-NAME PIC X(20). 05 EMP-ID PIC 9(9). .... 05 NUMBER-OF-DEPENDENTS PIC 9(4) COMP. 05 DEPENDENTS-ARRAY OCCURS 1 TO 20 TIMES DEPENDING ON NUMBER-OF-DEPENDENTS. 10 DEP-SSN PIC 9(9). 10 DEP-NAME PIC X(20). 10 DEP-DOB PIC 9(6). 10 DEP-GENDER PIC X.
示例:基于 COBOL 副本的 CREATE TABLE 语句。
DDL 映射一个数据项的子集:
CREATE TABLE CAC.EMPL .....
( EMP_ID SOURCE DEFINITION DATAMAP OFFSET 40 LENGTH 9 DATATYPE C USE AS CHAR(9), NUMBER_OF_DEPENDENTS SOURCE DEFINITION DATAMAP OFFSET 49 LENGTH 2 DATATYPE H USE AS SMALLINT, BEGINLEVEL 1 OFFSET 51 LENGTH 36 OCCURS 20 DEPENDING ON COLUMN NUMBER_OF_DEPENDENTS, DEP_ID SOURCE DEFINITION DATAMAP OFFSET 0 LENGTH 9 DATATYPE C USE AS CHAR(9), DEP_NAME SOURCE DEFINITION DATAMAP OFFSET 9 LENGTH 20 DATATYPE C USE AS CHAR(20), ENDLEVEL 1 )
示例:描述职员记录的 PL/I 包含文件。
DCL 1 EMPLOYEE_RECORD BASED,
5 EMP_LAST_NAME CHAR(20),
5 EMP_FIRST_NAME CHAR(20),
5 EMPID PIC '(9)9',
....
5 DEPENDENTS_ARRAY DIM(20)
10 DEP_ID PIC '(9)9',
10 DEP_NAME CHAR(20),
10 DEP_DOB PIC '(6)9',
10 DEP_RELATIONSHIP_TO_EMPL CHAR(1);
示例:定义可变长度数组的 PL/I 包含文件。
DCL 1 EMPLOYEE_RECORD BASED, 5 EMP_LAST_NAME CHAR(20), 5 EMP_FIRST_NAME CHAR(20), 5 EMPID PIC '(9)9', .... 5 NUMBER_OF_DEPENDENTS BIN FIXED(15), 5 DEPENDENTS_ARRAY DIM(N1 REFER(NUMBER_OF_DEPENDENTS)), 10 DEP_ID PIC '(9)9', 10 DEP_NAME CHAR(20), 10 DEP_DOB PIC '(6)9', 10 DEP_RELATIONSHIP_TO_EMPL CHAR(1);
示例:基于 PL/I 包含文件的 CREATE TABLE 语句。
DDL 映射一个数据项的子集:
在数据服务器上运行 DDL 以创建表时,数据服务器将自动计算数组实例的数目。尽管如此,映射可变长度数组后面的结构中的列所具有的限制仍适用。
CREATE TABLE "AA"."EMPLOYEE_RECORD" DBTYPE SEQUENTIAL DS "D" ( "EMPID" SOURCE DEFINITION DATAMAP OFFSET 40 LENGTH 9 DATATYPE C USE AS CHAR(9), "NUMBER_OF_DEPENDENTS" SOURCE DEFINITION DATAMAP OFFSET 49 LENGTH 2 DATATYPE H USE AS SMALLINT, BEGINLEVEL 1 OFFSET 51 LENGTH 0 OCCURS DEPENDING ON COLUMN "NUMBER_OF_DEPENDENTS", "DEP_ID" SOURCE DEFINITION DATAMAP OFFSET 0 LENGTH 9 DATATYPE C USE AS CHAR(9), "DEP_NAME" SOURCE DEFINITION DATAMAP OFFSET 9 LENGTH 20 DATATYPE C USE AS CHAR(20), ENDLEVEL 1 );