001900 DCL CI1PTR POINTER;
002000 DCL CI1PTRF FIXED BIN(31) BASED(ADDR(CI1PTR));
002100 DCL CI2PTR POINTER;
002200 DCL CI2PTRF FIXED BIN(31) BASED(ADDR(CI2PTR));
002300 DCL UTSCIFC CHAR(4089) VAR;
002400 DCL 1 CIF1 BASED(ADDR(UTSCIFC)),
002500 2 CITOTL FIXED BIN(15), /* TOTAL RECORD LENGTH */
002600 2 UTSCIFC_BEG_DMY
002800 2 CIIDQTY FIXED BIN(15), /* ID QUANTITY */
009800 2 CIMTCAC FIXED DEC(15), RELATIVE MTC SAVING AC NO.*/
009810 2 CIHKDAC FIXED DEC(15), /* RELATIVE HKD SAVING AC NO.*/
009820 2 CIFCYAC FIXED DEC(15), /* RELATIVE FCY SAVING AC NO.*/
009830 2 CIPBCINT CHAR(1), /* PBC INT INDICATOR */
009900 2 CIPCLASS FIXED DEC(1), /* PRIVILEGE CLASS */
009910 2 CINAT CHAR(9), /* NATIONNALITY */
009920 2 CICDTDAT(10) CHAR(6), /* TAX RATE FOR BRANCH */
010000 2 CIHKDPVC FIXED DEC(15,2),/* STAFF HKD PRIV.CERT TOT P */
010100 2 CIHKDP FIXED DEC(15,2),/* HKD CERT TOTAL PRINCIPAL */
010200 2 CIUSDP FIXED DEC(15,2),/* USD CERT TOTAL PRINCIPAL */
011300 2 CIIDNO(CIC1 REFER(CIIDQTY))
011410 CHAR(19), /* ID NUMBER */
011500 2 CIIDNO_END_DMY CHAR(0),
011600 2 CISIGNO(CIC2 REFER(CISIGQTY))
011700 CHAR(8), /* SIGNATURE NO */
011800 2 CISIGNO_END_DMY
011900 CHAR(0),
012000 2 CINAME CHAR(CIC3 REFER(CINAMEL)),
012100 /* CUSTOMER NAME */
012200 2 CINAME_END_DMY CHAR(0),
012300 2 CITRAILER CHAR(1); /* OFF SET */
012400 DCL 1 CIF12 BASED(CI1PTR),
012500 2 CIADDUM CHAR(1), /* ADDRESS */
012620 2 CIADDR(3) CHAR(32); /* ADDRESS 040717 ADD */
012700 DCL 1 CIF13 BASED(CI2PTR),
012800 2 CIACCTQ FIXED BIN(15), /* RELATED ACCOUNT QUANTITY */
012900 2 CIACCT(CIC4 REFER(CIACCTQ))
013000 FIXED DEC(15); /* ACCOUNT NUMBER */
013080 /* ’ ’ GET TAX RATE FROM CIN */
****** **************************** Bottom of Data ***************************
有关指针CI1PTR和指针CI2PTR的使用如下:
CI1PTR = ADDR(CITRAILER);
CI2PTRF = CI1PTRF + 97;
3、数据组织(data cyganigation) 3.1数组(array)
l 一组同属性(attribute)的数据元素
l 一个数组只有一个名字
l 数组内的各项由其在数组内的相应位置表明
一维数组
例: DCL A(8) FIXED DEC(3);
表示数组A有8个元素,每个都是FIXED的三位数字,分别称A(1),A(2),A(3),……,A(8).
二维数组
例: DCL B(4,2) FIXED DEC(3);
PL/I中元素排序以“行”为主
B(1,1),B(1,2),B(2,1),B(2,2),
B(3,1),B(3,2),B(4,1),B(4,2)
界(bound) 下界 上界
数组A 1 8
数组B 1 4
数组B 1 2
范围(extent)
数组A: 8
数组B: 4,2
l 数组维数最大为15维
l 下界不为1时,上、下界必须明确写
一维数组 DCL C(4:11) 下界为4,上界为11,范围是8。
二维数组 DCL D(-4:3,4:11)
第一维下界为-4,上界为3
第二维下界为4, 上界为11
范围是8,8
l A(I)其中A表示数组名称(array name),I表示下标(Subscript)
下标值若非定点二进整数,则一定转为FIXED BINARY(15)
3.2结构(Structure)
l 有逻辑性的数据成分(data element)的组合
l 各数据成分的属性(attribute)可以不同
l 组成形式是层次结构(hierarchy)
例: DCL 1 PAYROLL,
2 NAME,
3 FNAME CHAR,
3 LNAME CHAR,
2 HOURS,
3 REGULAR FIXED DEC,
3 OVERTIME FIXED DEC
2 RATE,
3 REGULAR FIXED DEC,
3 OVERTIME FIXED DEC;
注:PAYROLL是主结构(major structure),NAME、HOURS、RATE是次结构(minor structure),FNAME、LNAME、REGULAR、OVETTIME等是基本名字(elementary name)
l 结构名字必须是单义唯一的,为免混淆采用限定名(qualified name)
如 HOURS.REGULAR
RATE. EGULAR
l 结构数组(array of structure)
结构内是以数组出现如:
一维结构数组:DCL 1 A(8),
2 B CHAR(3),
2 C FIXED DEC(4);
二维结构数组:DCL 1 A(6,6),
2 B (4),
3 C FIXED BIN(4)
3 D FIXED BIN(4)
2 E…….
指称元素采用限定名如 A(1,2),B(3),C
3.3其它属性(attribute)
3.3.1 DEFINE
变量数组元素的存储位置可被其它变量(或数组元素)所定义,并可指定位置(position)
例1. DCL A(10,10);
DCL B(10,10) DEF A;
例2. DCL A CHAR(50);
DCL B CHAR(10) DEF A;
DCL C CHAR(15) DEF A POS(11);
DCL D CHAR(25) DEF A POS(26);
3.3.2 LIKE
结构与结构间其结构形式、名字、属性等,可在说明语句(DECLARE)中用LIKE这个属性照抄。
例: DCL 1 A 2 B 2 C 3 D 3 E
当有说明语句:
DCL 1 X LIKE A;
即为:DCL 1 X 2 B 2 C 3 D 3 E
可以有:
2 主结构与主结构间用LIKE属性
2 主结构与次结构间用LIKE属性
2 次结构与主结构间用LIKE属性
2 次结构与次结构间用LIKE属性
3.3.3 INIT 赋初值(可为常数、字符串、表达式等)