PL1基础入门教程
更新时间:2023-12-26 18:34:01 阅读量: 教育文库 文档下载
- PL1基因推荐度:
- 相关推荐
一、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,9
1.3 21个专用字符(如下所示) ♀ 空格 % 百分号 = 等号 ; 分号 + 加号 : 冒号 - 减号 < 小于 *
星号(乘号) > 大于 /
斜线(除号) | 或 (
左括号 & 与 )
右括号
┒ 非 , 逗号 _
短划号 .
小数点 ? 问号 ’ 引号
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、 数值字符数据(numeric character data)
C、 字符串数据(String data)
n 控制型数据
A、 文件数据(file data)
B、 标号数据(label data)
C、 入口数据(entry data)
D、 定位数据(locator data)
1、运算型数据
1.1算术数据有下列4个特性
进位制(Base): 十进位、二进位;
记数法(scale): 定点、浮点
精确度(precision):(P:表示有效数位;q:表示有效小数位)
型(mode): 实型、复型等。
1.1.1定点十进数 例:
定点十进数 3.1416 732 003 0.0012 -528
精确度 (5.4)
(3.0) (3.0) (4.4) (4.0)
存储形式
(十六进制) 31,41,60 73,20 00,30 0,01,20 528,0
注: 对定点十进数(p,q)
2 占用存贮的字符数==[p/2]+1
2 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 数值字符数据
它是介于算术数据与字符串数据间的数据 数 123
732.10 98.7 书写
PIC ‘999’
PIC ‘999V.99’
PIC ‘99V9’
存贮形式 F1 F2 F3 F7 F3 F2 4B F1 F0 F9 F8 F7
其中: V表明在数据域中该位置出现一个隐含的十进位或二进位小数点.
若V后面还有“.”,表明相应数据域位置包含一个小数点
注:
u 数值字符数据主要是构成定点十进数,定点二进数可打印的形式;
u 在PIC后面引号(”)中的数字字符个数最多15个;
u 数值字符数据可进行算术运算,但须经转换;
u 如果一个数字字符定义为PIC ‘ZZZV.’,则不管此字符是否有值,都显示为“ .”。
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);
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 赋初值(可为常数、字符串、表达式等)
2 赋常数为初值
DCL A FIXED DEC(5,4) INIT(3.1416);
2 赋字符串为初值
DCL NAME CHAR(B) INIT(‘BANK OF CHINA’)
2 用表达式作为赋初值
DCL B INIT(M*N);
2 用内部函数来赋初值
DCL DATE BUILTIN;
DCL YMD PIC’99/99/99’ INIT(DATE);
2 对数组赋初值
整个数组元素: DCL A(10) FIXED BIN(15) INIT((10)0)
部分数组元素: DCL A(15) CHAR(10)
INIT(‘ASM’,’COBOL’,*,’PL/I’)
则仅对A(1),A(2),A(4)分别赋初值为:ASM COBOL PL/I
2 对几个变量同时赋初值
DCL (A,B,C) FIXED BIN(15) INIT(0);
即同时对A,B,C赋以0
2 对一个内存进行初始化: 如:
0DCL TEST_RECORD CHAR(31);
DCL 1 TEST_REC BASED(ADDR(TEST_RECORD)),
2 TEST_BKNO FIXED DEC(3),
2 TEST_BK2C FIXED DEC(3),
2 TEST_CUR CHAR(3),
TEST_REC = ‘’;
这样可以对TEST_BKNO、TEST_BK2C、TEST_CUR按它们对应的类型进行初始化。
2 动态初始化:
DCL W FIXED BIN(15) INIT(REMQTY);
注:REMQTY是一个带返回值的程序。有REMQTY在编译前处理,因此REMQTY程序内用的变量最好是局部变量,特别读的COPY BOOK一定要定义为局部变量。
4、表达式(expression) 4.1运算符
算术运算 +,-,*,/,**
逻辑运算 ┑,|,&
比较运算 <,=,>,<=,>=,┑<,┑=,┑>
连接运算 ‖
4.2算术运算的优先级 ** * + / -
若要更改运算的优先顺序,可采用括号或前缀符作人为规定
4.3逻辑运算 A B ┑A ┑B A & B A | B 1 1
0 0 1 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0
4.4比较运算
4.4.1算术比较
当运算对进行比较时,若进位制、精确度、型等不同则先进行数据转换
4.4.2字符比较
从左到右逐个字符相比
4.4.3位(二进位)的比较
从左到右逐位进行比较
注:1. 不同长的串进行比较时,把短者延长与长者相等后再作比较,
字符,延长部分是以空格补足
二进位,延长部分是以“0”B补足
2. 优先顺序
属性相同时:代数的、字符的、二进位的
属性不同时:二进位的、字符的、代数的
例:BIT与 FIXED DEC 作比较
则BIT –> FIXED BIN和FIXED DEC –> FIXED BIN再相比
3. 比较结果以BIT的一位表示
真——-’1’B 假——-’0’B
4.5 连接运算
把串(字符串、二进位字符串)进行合并的运算,
但若BIT与CHAR进行此运算,BIT一定要转换成CHAR再作合并。
4.6运算符的优先顺序
**,prefix+, prefix-,┑ *,/
infix+, infix- ‖
<,┑<,<=,=,┑=,>=,>,┑> & |
4.7数组表达式(Harray Expression)
4.7.1数组是由一组数据元素组成,而IF语句是只试验单一条件,所以数组不能用于IF语句里.
例: 设A为数组
则只能有IF A(I)……THEN 其中A(I)为A的某一元素,
不能写IF A…… THEN…….
4.7.2数组的运算
例:设数组A(3,2)
则 A*3的结果是:A(1,1)*3, A(1,2)*3,
A(2,1)*3,A(2,2)*3,
A(3,1)*3,A(3,2)*3
若B=A*3 则B必须与A有相同的界和范围
2 A+-B 对应元素相加、减
2 A*/B 对应元素相乘、除
4.8结构表达式(Structure expression)
4.8.1 结构与变量的运算,即是结构中基本名字与变量进行相应运算
例: DCL 1 A 2 B 3 C 3 D 2 E 3 F
设A * X即 A.C * X
A.D * X
A.F * X
4.8.2 结构与结构的运算,两结构的组成形式应一样,结果是:两结构的相应基本名字作所规定的运算.
例: DCL 1 A 2 B 3 C 3 D
正在阅读:
PL1基础入门教程12-26
杭州市2013届高三第二次教学质检检测自选模块试题 - 图文02-01
18秋学期(1709、1803、1809)《中级会计学》在线作业03-15
初二年级班主任工作总结Word编辑04-09
工作失误检讨书范文02-16
英语国家概况名词解释系列07-21
三相异步电机的矢量控制策略 - 图文01-23
室内健康植物选修论文05-27
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 入门教程
- 基础
- PL1
- 弧圈球打法乒乓球底板和套胶的选择
- “十三五”重点项目-聚合蔬菜种植基地建设项目可行性研究报告 - 图文
- 村山塘配套工程砼路面建设、塘渣便道、路灯安装施工招标技术标
- 精细化工习题答案
- 人教版小学语文三年级上册《我们的民族小学》课堂实录
- 子公司重大事项报告制度实施细则
- 阅读《C陷阱与缺陷》的知识增量
- 2017年内蒙古呼和浩特市中考历史试题(含详细答案)
- 成都某园林工程施工组织设计 - secret
- 课堂阅读教学之我见
- 华制培训课程计划表(公开课、标杆企业考察)2.1
- (新课标)2015届高考化学大一轮复习讲义 第四章 排查落实练八
- 2013-2018年中国塑料网机市场运营格局及投资潜力可行性研究预测报告
- 2015-2016年人教版高一英语必修二Unit 1练习题及答案Unit 1Cultural relics Period 4
- 北师大版一年级数学《上下》教学设计
- 电容式触摸屏检验标准
- 小学视导检查工作汇报
- 四年级上册口算练习 方法讲解
- 基于无线通信网络技术的远程
- 一次函数过关卷,绝对经典!