1.2.1定点十进数(FD)、定点二进数(FB)和PIC间的转换
例: DCL A PIC‘99’
DCL B PIC‘99’
DCL C PIC‘99’
C==A+B
则为欲求得C,须经:
A FIXED DEC,
B FIXED DEC
A_FD + B_FD
FIXED DEC PIC 赋予C
在算术运算时,必须转为FIXED DEC 才能进行
转换表
R C FB FD PIC FB —— C FB
C FD FD FB FD
R FB —— C FD PIC
R FD
FD FB R FD
C FD R FD
注:一般金额采用 FIXED DEC
整数采用 FIXED BIN
PIC用于 输入/输出 它是字符与算术数据间的桥梁。
1.3 串数据(String data)
1.3.1 字符串数据(Character String data)
值 PL/1写法 存贮形式
‘ABC’ CHAR(6) C1,C2,C3,40,40,40
‘A102’ CHAR(4) C1,F1,F0,F2
‘A’ CHAR(4) C1,40,40,40
2 字符串数据通常在程序内赋值时用.
例: X==‘THIS REPORT IS ’
2 赋值时,字符串数据括于单引号内
2 赋值时,在字符串右边不足部分,系统自动以“空白 ”符补足
例: DCL X CHAR(5)
… …
X =‘A’; X值会是 A后跟随4个空格
2 字符串内出现单引号时,必须以两个单引号(称为Null String)表示,否则会引起
混淆。
例: 设赋值给X,其值为:JOHN’S CAP
则必须写为 X==‘JOHN’’S CAP’
(注:若写为X==‘JOHN’S CAP’,则S CAP’被略)
2 重复的字符串数据可用重复因子表示
例: X==(N)’BCC ‘表示X有值为 BCC ,BCC ,…….(N个)
1) 重复因子必须放在括号内;
2) 重复因子只对紧接的一个字符生效
例: PIC’(4)AB’ 乃表示PIC’AAAAB’
2 CHARACTER PICTURE SPECIFICATION
PIC’9’表示数字0~9
PIC’A’表示字母A~z
PIC’X’表示仸何字符
1.3.2 (二进)位串数据(BIT String data)
值 PL/I写法 存贮形式
‘1’B BIT(1) 占1字符
‘1111’B BIT(4) 占1字符
(64)’0’B BIT(64) 占8字符
2 位串数据赋给变量是从左到右进行,若串数据长度,超过变量说明的长度,则以变量
长度为准,截去串数据右端的位;若串数据长度短于变量说明的长度,也以变量长度
为准,右边自动以0补足.
2 位串数据通常用于检查 真/假 条件
真 TRUE_______’1’B
假 FALSE_______’0’B
例: DCL EOF BIT(1)
——–
__在检查“真”时可写:IF EOF=‘1’B 或 IF EOF
—在检查“假”时可写:IF EOF=‘0’B 或 IF ﹁EOF
2、控制型数据
2.1文件数据(File data):它表示PL/I文件的信息
l 它是PL/1的输入/输出文件名字
l 即JCL的输入/输出DD名字,File name和DDname互相对应
例: DCL INFILE INPUT RECCRD FILE
DCL OUTFILE OUTPUT STREAM FILE
2.2标号数据(label data)
l 作为语句标号引用
例: LOOP:——-
——-
——-
GO TO LOOP;
l 作为语句标号变量
例: DCL CIRCLE LABEL
LOOP1:———
——–
———
LOOP2:——–
——–
——–
CIRCLE==LOOP1;
… …
GO TO CIRCLE; ——–> 等价于 GO TO LOOP1
… …
2.3 入口数据(ENTRY Data)
——用作过程(Procedure)的入口点(entry point)
例:A:PROC OPTIONS(MAIN)
… …
B:PROC;
A,B即为入口点,称为入口数据,可由CALL语句来调用 CALL B;
——用作入口变量(entry variable)
例:DCL A ENTRY VARIABLE;
DCL(A1,A2)ENTRY;
IF X THEN A=A1;
ELSE A=A2;
CALL A; 等价于:
IF X THEN CALL A1;
ELSE CALL A2;
2.4 定位数据(Locator data)
根据POINTER变量所取的值作为指定的地址
例: DCL P POINTER
DCL A CHAR(8)
DCL X CHAR(8)
l 基于POINTER
DCL B FIXED DEC(15) BASED(P);
P=ADDR(A)
此时B不占空间,根据P描述,也即为B 描述为FIXED DEC(15)
若P=ADDR(X)
则B又随P描述X了,于是B是活动的,随P变化.
l 基于ADDRess
DCL B FIXED DEC(7) BASED (ADDR(A))
此时,B 是固定的,它由A的地址唯一确定
001500 DCL CIC1 FIXED BIN(15);
001600 DCL CIC2 FIXED BIN(15);
001700 DCL CIC3 FIXED BIN(15);
001800 DCL CIC4 FIXED BIN(15);