PLI程式说明中文12页word.docx
- 文档编号:27885468
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:21
- 大小:30.78KB
PLI程式说明中文12页word.docx
《PLI程式说明中文12页word.docx》由会员分享,可在线阅读,更多相关《PLI程式说明中文12页word.docx(21页珍藏版)》请在冰豆网上搜索。
PLI程式说明中文12页word
一、PL/1的字符集及书写
死记硬背是一种传统的教学方式,在我国有悠久的历史。
但随着素质教育的开展,死记硬背被作为一种僵化的、阻碍学生能力发展的教学方式,渐渐为人们所摒弃;而另一方面,老师们又为提高学生的语文素养煞费苦心。
其实,只要应用得当,“死记硬背”与提高学生素质并不矛盾。
相反,它恰是提高学生语文水平的重要前提和基础。
1、PL/1的字符集
“教书先生”恐怕是市井百姓最为熟悉的一种称呼,从最初的门馆、私塾到晚清的学堂,“教书先生”那一行当怎么说也算是让国人景仰甚或敬畏的一种社会职业。
只是更早的“先生”概念并非源于教书,最初出现的“先生”一词也并非有传授知识那般的含义。
《孟子》中的“先生何为出此言也?
”;《论语》中的“有酒食,先生馔”;《国策》中的“先生坐,何至于此?
”等等,均指“先生”为父兄或有学问、有德行的长辈。
其实《国策》中本身就有“先生长者,有德之称”的说法。
可见“先生”之原意非真正的“教师”之意,倒是与当今“先生”的称呼更接近。
看来,“先生”之本源含义在于礼貌和尊称,并非具学问者的专称。
称“老师”为“先生”的记载,首见于《礼记?
曲礼》,有“从于先生,不越礼而与人言”,其中之“先生”意为“年长、资深之传授知识者”,与教师、老师之意基本一致。
PL/1的字符集一般分为48个字符与60个字符两种,目前采用60个字符的字符集。
1.1要练说,得练看。
看与说是统一的,看不准就难以说得好。
练看,就是训练幼儿的观察能力,扩大幼儿的认知范围,让幼儿在观察事物、观察生活、观察自然的活动中,积累词汇、理解词义、发展语言。
在运用观察法组织活动时,我着眼观察于观察对象的选择,着力于观察过程的指导,着重于幼儿观察能力和语言表达能力的提高。
29个字母字符
A,B,…….,Z,$,@,#
1.210个数字
0,1,2,3,4,5,6,7,8,9
1.321个专用字符(如下所示)
♀
空格
%
百分号
=
等号
;
分号
+
加号
:
冒号
-
减号
<
小于
*
星号(乘号)
>
大于
/
斜线(除号)
|
或
(
左括号
&
与
)
右括号
┒
非
逗号
_
短划号
.
小数点
?
问号
’
引号
2、L/I源程序的书写
2.1源程序从第2列开始写至第72列为止
2.2每个语句(Statement)以“;”结束
2.3注释(Comment)以“/*”开始,以“*/”结束,其间可出现任何字符。
2.4第1列上的字符用作打印时的控制字符
1
:
换新页
♀
:
换一行
0
:
换二行(空一行,现换一行)
-
:
换三行(空二行,再换一行)
二、数据和表达式(DATAandExpression)
数据类型分两类:
⏹运算型数据
A、算术数据
a:
定点十进数(Fixed decimaldata)
b:
定点二进数(Fixedbinarydata)
B、数值字符数据(numericcharacterdata)
C、字符串数据(Stringdata)
⏹控制型数据
A、文件数据(filedata)
B、标号数据(labeldata)
C、入口数据(entry data)
D、定位数据(locatordata)
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)
✧占用存贮的字符数==[p/2]+1
✧P最大值是15,占8个字符
✧(p,q)未指明时,系统约定为(5,0)
1.1.2定点二进数
例:
定点二进数0001011011111111
十六进制表示16FF
十进制表示22-1
注:
✧最大有效数位31,占4字符
✧未指明时系统约定值为FIXEDBIN(15),占2字符.
✧位数低于15位的也占2字符
✧位数高于15位的,则占4字符
✧变量名以I,J,K,L,M,N开始,若未指明时,约定为FIXEDBIN(15);以其它
字母开始约定为FIXEDDEC(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后面还有“.”,表明相应数据域位置包含一个小数点
注:
◆数值字符数据主要是构成定点十进数,定点二进数可打印的形式;
◆在PIC后面引号('')中的数字字符个数最多15个;
◆数值字符数据可进行算术运算,但须经转换;
◆如果一个数字字符定义为PIC‘ZZZV.’,则不管此字符是否有值,都显示为“.”。
1.2.1定点十进数(FD)、定点二进数(FB)和PIC间的转换
例:
DCLAPIC‘99’
DCLBPIC‘99’
DCLCPIC‘99’
C==A+B
则为欲求得C,须经:
AFIXEDDEC,
BFIXEDDEC
A_FD+B_FD
FIXEDDECPIC赋予C
在算术运算时,必须转为FIXEDDEC才能进行
转换表
RC
FB
FD
PIC
FB
——
CFB
CFDFDFB
FD
RFB
——
CFD
PIC
RFD
FDFB
RFD
CFDRFD
注:
一般金额采用FIXEDDEC
整数采用FIXEDBIN
PIC用于输入/输出它是字符与算术数据间的桥梁。
1.3串数据(Stringdata)
1.3.1字符串数据(CharacterStringdata)
值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
✧字符串数据通常在程序内赋值时用.
例:
X==‘THISREPORTIS’
✧赋值时,字符串数据括于单引号内
✧赋值时,在字符串右边不足部分,系统自动以“空白”符补足
例:
DCLXCHAR(5)
X=‘A’;X值会是A后跟随4个空格
✧字符串内出现单引号时,必须以两个单引号(称为NullString)表示,否则会引起
混淆。
例:
设赋值给X,其值为:
JOHN’SCAP
则必须写为X==‘JOHN’’SCAP’
(注:
若写为X==‘JOHN’SCAP’,则SCAP’被略)
✧重复的字符串数据可用重复因子表示
例:
X==(N)’BCC‘表示X有值为BCC,BCC,…….(N个)
1)重复因子必须放在括号内;
2)重复因子只对紧接的一个字符生效
例:
PIC’(4)AB’乃表示PIC’AAAAB’
✧CHARACTERPICTURESPECIFICATION
PIC’9’表示数字0~9
PIC’A’表示字母A~z
PIC’X’表示任何字符
1.3.2(二进)位串数据(BITStringdata)
值PL/I写法存贮形式
‘1’BBIT
(1)占1字符
‘1111’BBIT(4)占1字符
(64)’0’BBIT(64)占8字符
✧位串数据赋给变量是从左到右进行,若串数据长度,超过变量说明的长度,则以变量
长度为准,截去串数据右端的位;若串数据长度短于变量说明的长度,也以变量长度
为准,右边自动以0补足.
✧位串数据通常用于检查真/假条件
真TRUE_______’1’B
假FALSE_______’0’B
例:
DCLEOFBIT
(1)
__在检查“真”时可写:
IFEOF=‘1’B或IFEOF
—在检查“假”时可写:
IFEOF=‘0’B或IF﹁EOF
2、控制型数据
2.1文件数据(Filedata):
它表示PL/I文件的信息
●它是PL/1的输入/输出文件名字
●即JCL的输入/输出DD名字,File name和DDname互相对应
例:
DCLINFILEINPUTRECCRDFILE
DCLOUTFILEOUTPUTSTREAMFILE
2.2标号数据(labeldata)
●作为语句标号引用
例:
LOOP:
-------
GOTOLOOP;
●作为语句标号变量
例:
DCLCIRCLELABEL
LOOP1:
---------
LOOP2:
--------
CIRCLE==LOOP1;
GOTOCIRCLE;-------->等价于GOTOLOOP1
2.3入口数据(ENTRYData)
——用作过程(Procedure)的入口点(entrypoint)
例:
A:
PROCOPTIONS(MAIN)
B:
PROC;
A,B即为入口点,称为入口数据,可由CALL语句来调用CALLB;
——用作入口变量(entryvariable)
例:
DCLAENTRYVARIABLE;
DCL(A1,A2)ENTRY;
IFXTHENA=A1;
ELSEA=A2;
CALLA;
等价于:
IFXTHENCALLA1;
ELSECALLA2;
2.4定位数据(Locatordata)
根据POINTER变量所取的值作为指定的地址
例:
DCLPPOINTER
DCLACHAR(8)
DCLXCHAR(8)
●基于POINTER
DCLBFIXEDDEC(15)BASED(P);
P=ADDR(A)
此时B不占空间,根据P描述,也即为B描述为FIXEDDEC(15)
若P=ADDR(X)
则B又随P描述X了,于是B是活动的,随P变化.
●基于ADDRess
DCLBFIXEDDEC(7)BASED(ADDR(A))
此时,B是固定的,它由A的地址唯一确定
001500DCLCIC1FIXEDBIN(15);
001600DCLCIC2FIXEDBIN(15);
001700DCLCIC3FIXEDBIN(15);
001800DCLCIC4FIXEDBIN(15);
001900DCLCI1PTRPOINTER;
002000DCLCI1PTRFFIXEDBIN(31)BASED(ADDR(CI1PTR));
002100DCLCI2PTRPOINTER;
002200DCLCI2PTRFFIXEDBIN(31)BASED(ADDR(CI2PTR));
002300DCLUTSCIFCCHAR(4089)VAR;
002400DCL1CIF1BASED(ADDR(UTSCIFC)),
0025002CITOTLFIXEDBIN(15),/*TOTALRECORDLENGTH*/
0026002UTSCIFC_BEG_DMY
0028002CIIDQTYFIXEDBIN(15),/*IDQUANTITY*/
0098002CIMTCACFIXEDDEC(15),RELATIVEMTCSAVINGACNO.*/
0098102CIHKDACFIXEDDEC(15),/*RELATIVEHKDSAVINGACNO.*/
0098202CIFCYACFIXEDDEC(15),/*RELATIVEFCYSAVINGACNO.*/
0098302CIPBCINTCHAR
(1),/*PBCINTINDICATOR*/
0099002CIPCLASSFIXEDDEC
(1),/*PRIVILEGECLASS*/
0099102CINATCHAR(9),/*NATIONNALITY*/
0099202CICDTDAT(10)CHAR(6),/*TAXRATEFORBRANCH*/
0100002CIHKDPVCFIXEDDEC(15,2),/*STAFFHKDPRIV.CERTTOTP*/
0101002CIHKDPFIXEDDEC(15,2),/*HKDCERTTOTALPRINCIPAL*/
0102002CIUSDPFIXEDDEC(15,2),/*USDCERTTOTALPRINCIPAL*/
0113002CIIDNO(CIC1REFER(CIIDQTY))
011410CHAR(19),/*IDNUMBER*/
0115002CIIDNO_END_DMYCHAR(0),
0116002CISIGNO(CIC2REFER(CISIGQTY))
011700CHAR(8),/*SIGNATURENO*/
0118002CISIGNO_END_DMY
011900CHAR(0),
0120002CINAMECHAR(CIC3REFER(CINAMEL)),
012100/*CUSTOMERNAME*/
0122002CINAME_END_DMYCHAR(0),
0123002CITRAILERCHAR
(1);/*OFFSET*/
012400DCL1CIF12BASED(CI1PTR),
0125002CIADDUMCHAR
(1),/*ADDRESS*/
0126202CIADDR(3)CHAR(32);/*ADDRESS040717ADD*/
012700DCL1CIF13BASED(CI2PTR),
0128002CIACCTQFIXEDBIN(15),/*RELATEDACCOUNTQUANTITY*/
0129002CIACCT(CIC4REFER(CIACCTQ))
013000FIXEDDEC(15);/*ACCOUNTNUMBER*/
013080/*''GETTAXRATEFROMCIN*/
**********************************BottomofData***************************
有关指针CI1PTR和指针CI2PTR的使用如下:
CI1PTR=ADDR(CITRAILER);
CI2PTRF=CI1PTRF+97;
3、数据组织(datacyganigation)
3.1数组(array)
●一组同属性(attribute)的数据元素
●一个数组只有一个名字
●数组内的各项由其在数组内的相应位置表明
一维数组
例:
DCLA(8)FIXEDDEC(3);
表示数组A有8个元素,每个都是FIXED的三位数字,分别称A
(1),A
(2),A(3),……,A(8).
二维数组
例:
DCLB(4,2)FIXEDDEC(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)下界上界
数组A18
数组B14
数组B12
范围(extent)
数组A:
8
数组B:
4,2
●数组维数最大为15维
●下界不为1时,上、下界必须明确写
一维数组DCLC(4:
11)下界为4,上界为11,范围是8。
二维数组DCLD(-4:
3,4:
11)
第一维下界为-4,上界为3
第二维下界为4,上界为11
范围是8,8
●A(I)其中A表示数组名称(arrayname),I表示下标(Subscript)
下标值若非定点二进整数,则一定转为FIXEDBINARY(15)
3.2结构(Structure)
●有逻辑性的数据成分(dataelement)的组合
●各数据成分的属性(attribute)可以不同
●组成形式是层次结构(hierarchy)
例:
DCL1PAYROLL,
2NAME,
3FNAMECHAR,
3LNAMECHAR,
2HOURS,
3REGULARFIXEDDEC,
3OVERTIMEFIXEDDEC
2RATE,
3REGULARFIXEDDEC,
3OVERTIMEFIXEDDEC;
注:
PAYROLL是主结构(majorstructure),NAME、HOURS、RATE是次结构(minorstructure),FNAME、LNAME、REGULAR、OVETTIME等是基本名字(elementaryname)
●结构名字必须是单义唯一的,为免混淆采用限定名(qualifiedname)
如HOURS.REGULAR
RATE.EGULAR
●结构数组(arrayofstructure)
结构内是以数组出现如:
一维结构数组:
DCL1A(8),
2BCHAR(3),
2CFIXEDDEC(4);
二维结构数组:
DCL1A(6,6),
2B(4),
3CFIXEDBIN(4)
3DFIXEDBIN(4)
2E…….
指称元素采用限定名如A(1,2),B(3),C
3.3其它属性(attribute)
3.3.1DEFINE
变量数组元素的存储位置可被其它变量(或数组元素)所定义,并可指定位置(position)
例1.DCLA(10,10);
DCLB(10,10)DEFA;
例2.DCLACHAR(50);
DCLBCHAR(10)DEFA;
DCLCCHAR(15)DEFAPOS(11);
DCLDCHAR(25)DEFAPOS(26);
3.3.2LIKE
结构与结构间其结构形式、名字、属性等,可在说明语句(DECLARE)中用LIKE这个属性照抄。
例:
DCL1A
2B
2C
3D
3E
当有说明语句:
DCL1XLIKEA;
即为:
DCL1X
2B
2C
3D
3E
可以有:
✧主结构与主结构间用LIKE属性
✧主结构与次结构间用LIKE属性
✧次结构与主结构间用LIKE属性
✧次结构与次结构间用LIKE属性
3.3.3INIT赋初值(可为常数、字符串、表达式等)
✧赋常数为初值
DCLAFIXEDDEC(5,4)INIT(3.1416);
✧赋字符串为初值
DCLNAMECHAR(B)INIT(‘BANKOFCHINA’)
✧用表达式作为赋初值
DCLBINIT(M*N);
✧用内部函数来赋初值
DCLDATEBUILTIN;
DCLYMDPIC’99/99/99’INIT(DATE);
✧对数组赋初值
整个数组元素:
DCLA(10)FIXEDBIN(15)INIT((10)0)
部分数组元素:
DCLA(15)CHAR(10)
INIT(‘ASM’,’COBOL’,*,’PL/I’)
则仅对A
(1),A
(2),A(4)分别赋初值为:
ASMCOBOLPL/I
✧对几个变量同时赋初值
DCL(A,B,C)FIXEDBIN(15)INIT(0);
即同时对A,B,C赋以0
✧对一个内存进行初始化:
如:
0DCLTEST_RECORDCHAR(31);
DCL1TEST_RECBASED(ADDR(TEST_RECORD)),
2TEST_BKNOFIXEDDEC(3),
2TEST_BK2CFIXEDDEC(3),
2TEST_CURCHAR(3),
TEST_REC=‘’;
这样可以对TEST_BKNO、TEST_BK2C、TEST_CUR按它们对应的类型进行初始化。
✧动态初始化:
DCLWFIXEDBIN(15)INIT(REMQTY);
注:
REMQTY是一个带返回值的程序。
有REMQTY在编译前处理,因此REMQTY程序内用的变量最好是局部变量,特别读的COPYBOOK一定要定义为局部变量。
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与 FIXEDDEC作比较
则BIT--> FIXEDBIN和FIXEDDEC-->FIXEDBIN再相比
3.比较结果以BIT的一位表示
真-------’1’B假-------’0’B
4.5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLI 程式 说明 中文 12 word