
PL1基础入门教程.docx
22页一、PL/1的字符集及书写1、 PL/1 的字符集PL/1 的字符集一般分为 48个字符与 60个字符两种,目前采用 60个字符的字符集1.1 29 个字母字符A, B,…….,Z,$, @,#1.2 10个数字0, 1, 2, 3, 4, 5, 6, 7, 8, 91.3 21个专用字符(如下所示)早空格%百分号坐口等号分号+加号冒号减号<小于*星号(乘号)>大于/斜线(除号)|或(左括号&与)右括号1非逗号短划号小数点?问号引号2、L/I 源程序的书写2.1源程序从第 2列开始写至第 72列为止2.2每个语句(Statement)以“;”结束2.3注释(Comment)以“/*”开始,以“*/”结束,其间可出现任何字符2.4第 1列上的字符用作打印时的控制字符1换新页早换一行0换二行(空一行,现换一行)换三行(空二行,再换一行)二、数据和表达式(DATA and Expression) 数据类型分两类:n 运算型数据A、 算术数据a :定点十进数(Fixed decimal data)b:定点二进数(Fixed binary data)B、 数值字符数据(nu meric charac ter data)C、 字符串数据(St ring data)n 控制型数据A、 文件数据(file data)B、 标号数据(label data)C、 入口数据(entry data)D、 定位数据(loca tor data)1、运算型数据1.1算术数据有下列 4个特性进位制(Base):十进位、二进位;记数法(scale):定点、浮点精确度(precision):(P :表示有效数位;q :表示有效小数位) 型(m ode):实型、复型等。
1.1.1 定点十进数例:定点十进数3.14167320030.0012-528精确度(5.4)(3.0)(3.0)(4.4)(4.0)存储形式(十六进制)31,41,6073,2000,300,01,20528,0注:对定点十进数(p,q)2占用存贮的字符数==[p/2]+l2 P最大值是15,占8个字符2 (p,q)未指明时,系统约定为(5,0)1.1.2定点二进数例: 定点二进数 0001 0110 11111111十六进制表示 16 F F十进制表示 22 - 1注:2 最大有效数位 31,占 4字符2未指明时系统约定值为FIXED BIN(15),占2字符.2 位数低于15位的也占 2字符2 位数高于15位的,则占 4字符2变量名以I,J,K,L,M,N开始,若未指明时,约定为FIXED BIN(15);以其它字母开始约定为 FIXED DEC(6)1.2数值字符数据数123732.1098.7书写PIC ‘999'PIC ‘999V.99'PIC ‘99V9'存贮形式F1F2F3F7F3F24BF1F0F9F8F7其中: V 表明在数据域中该位置出现一个隐含的十进位或二进位小数点. 若 V 后面 还 有“. ”,表明相应 数据域位置包含一个小数点 注:u 数 值 字符数据主要是构成定点十进 数,定点二进 数可打印的形式;u在PIC后面引号(”)中的数字字符个数最多15个;u 数值字符数据可进行算术运算,但须经转换;u如果一个数字字符定义为PIC 'ZZZV.',则不管此字符是否有值,都显示为例: DCL A PIC‘99'DCL B PIC‘99'DCL C PIC‘99'C==A+B则为欲求得C,须经:A FIXED DEC,B FIXED DECA_FD + B_FDFIXED DEC PIC 赋予 C在算术运算时,必须转为FIXED DEC才能进行转换表R CFBFDPICFBC FBC FD FD FBFDR FBC FDPICR FDFD FBR FDC FD R FD注:一般金额采用 FIXED DEC整数采用 FIXED BINPIC用于输入/输出它是字符与算术数据间的桥梁。
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,402字符串数据通常在程序内赋值时用.例: X==‘THIS REPORT IS'2 赋值时,字符串数据括于单引号内2 赋值时,在字符串右边不足部分,系统自动以“空白 ”符补足例: DCL X CHAR(5)X = 'A'; X值会是A后跟随4个空格2字符串内出现单引号时,必须以两个单引号(称为Null St ring)表示,否则会引起 混淆例:设赋值给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 SPECIFICATIONPIC' 9 表示数字0~9PIC' A'表示字母A~zPIC' X'表示任何字符1.3.2 (二进)位串数据(BIT St ring data)值PL/I写法存贮形式' 1' BBIT(1)占1字符' 1111'B BIT(4)占1字符(64)' O'B BIT(64)占8字符2 位串数据赋给变量是从左到右进行,若串数据长度,超过变量说明的长度,则以变量 长度为准,截去串数据右端的位;若串数据长度短于变量说明的长度,也以变量长度 为准,右边自动以 0 补足.2 位串数据通常用于检查真/假 条件真 TRUE ' 1' B假 FALSE ' 0' B例: DCL EOF BIT(1)—在检查“真”时可写:IF EOF= T B或IF EOF-在检查“假”时可写:IF EOF= 'O' B或IF「EOF2、控制型数据2.1文件数据(File data):它表示PL/I文件的信息l 它是 PL/1 的输入/输出文件名字l即JCL的输入/输出DD名字,File name和DDname互相对应例: DCL INFILE INPUT RECCRD FILEDCL OUTFILE OUTPUT STREAM FILE2.2 标号数据(label data)l 作 为语 句 标 号引用例: LOOP:— — -GO TO LOOP;l 作 为语 句 标 号变 量例: DCL CIRCLE LABELLOOP1:———LOOP2: CIRCLE==LOOP1;GO TO CIRCLE ; > 等价于 GO TO LOOP12.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 POINTERDCL A CHAR(8)DCL X CHAR(8)l 基于 POINTERDCL B FIXED DEC(15) BASED(P);P=ADDR(A)此时B不占空间,根据P描述,也即为B描述为FIXED DEC(15) 若 P=ADDR(X)则B又随P描述X 了,于是B是活动的,随P变化.l 基于 ADDRessDCL B FIXED DEC(7) BASED (ADDR(A))此时,B是固定的,它由A的地址唯一确定001500 DCL CIC1FIXED BIN(15);001600 DCL CIC2FIXED BIN(15);001700 DCL CIC3FIXED BIN(15);001800 DCL CIC4FIXED BIN(15);002000 DCL CI1PTRFFIXED BIN(31) BASED(ADDR(CI1PTR));002100 DCL CI2PTRPOINTER;002200 DCL CI2PTRFFIXED BIN(31) BASED(ADDR(CI2PTR));002300DCL UTSCIFCCHAR(4089) VAR;002400DCL 1 CIF1BASED(ADDR(UTSCIFC)),0025002 CITOTLFIXED BIN(15), /* TOTAL RECORD LENGTH */0026002 UTSCIFCBEG_DMY0028002 CIIDQTYFIXED BIN(15), /* ID QUANTITY*/0098002 CIMTCACFIXED DEC(15), RELATIVE MTC SAVING AC NO.*/0098102 CIHKDACFIXED DEC(15), /* RELATIVE HKD SAVING AC NO.*/0098202 CIFCYACFIXED DEC(15), /* RELATIVE FCY SAVING AC NO.*/0098302 CIPBCINTCHAR(1),/* PBC INT INDICATOR*/0099002 CIPCLASSFIXED DEC(1), /* PRIVILEGE CLASS*/0099102 CINATCHAR(9),/* NATIONNALITY*/0099202 CICDTDAT(10) CHAR(6), /* TAX RATE FOR BRANCH */0100002 CIHKDPVC FIXED DEC(15,2),/* STAFF HKD PRIV.CERT TOT P */0101002 CIHKDPFIXED DEC(15,2),/* HKD CERT TOTAL PRINCIPAL */0102002 CIUSDPFIXED DEC(15,2),/* USD CERT TOTAL。












