




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
cobol的语法与文法REDEFINES
可以用不同的变量描述同一内存。
01PART_RECODEUSAGEDISPLAY
03PART-TYPEPICTURE...
03PART_TYPE_A.
05PART_NUMBERPICTURE...
05PART_COSTPICTURE...
03PART_TYPE_BREDEFINESPART_TYPE_A.
05UPC_CODEPICTURE...
03PART_TYPE_CREDEFINESPART_TYPE_A.
05ISBNPICTURE...
根据PART_TYPE决定用PART_TYPE_A还是PART_TYPE_B还是PART_TYPE_C。
规则:
PART_TYPE_B和PART_TYPE_C长度不能大于PART_TYPE_A。
数据项不能有VALUE。
01层不能用REDEFINES.
PART_TYPE_B和PART_TYPE_C中不能有OCCURS.
PICTURE
定义基本项目的具体长度,格式,数据类型。可以简写成PIC.
格式字符串最多30个字符,可以包含下列字符:
A
字母A-Z,a-z,空格
B
插入空格
P
标量字符,代表字段中不显示的小数点位置
S
代数符号,实际显示取决于项目的USAGE
V
小数点位置
X
任何字符
Z
抑制前头的0并转换成空字符
0
插入0
9
数字0~9
/
插入/
,
插入,(逗号不能作为字符串的最后一位,最后时逗号是分隔符)
。插入。
*
抑制前头的0并转换成*
+
正值插入+,负值插入-
-
正值插入空格,负值插入-
$
插入美元号
CR正值插入两个空格,负值插入CR
DB正值插入两个空格,负值插入DB例子:
03VARPICAAAAA.
STATE变量长度为5个字符,不能有数字,等价于03STATEPICA(5)。
输入ASDFG,显示ASDFG
03VARPICXXXXX.
FILLER变量长度为5个任意字符。等价于03FILLERPICX(5)。
输入123AS,显示123AS
03VARPIC99/XXX/9999长度11,输入05may2004,显示05/may/2004
03VARPIC0ABXXX/9999长度11,输入05may2004,显示05may/2004
03VARPIC9(3)长度3,0~999之间。
03VARPIC9(4)V99长度6,0.00~9999.99之间。
03VARPICS9(5)V99长度7,-99999.99~99999.99之间。
03VARPIC9(6)PPP长度6,可以是1000,2000,...,999999000。输入1234,显示1000。
03VARPICPPP999长度3,0.000001~0.000999之间。输入123,显示0.000123。
03VARPICZZZ.99,输入100.50,显示100.50;输入-51.50,显示51.50;
输入0,显示.00.
03VARPIC$ZZZ.ZZ-,输入100.50,显示$100.50;输入-51.50,显示$51.50-;
输入0,显示
03VARPIC$***,***.99CR,输入1000,显示$**1000.00;输入-1000,显示$**1000.00CR;
输入0,显示$***,***.00;输入51.5,显示$***,*51.50
03VARPIC$$$,$$$.99,输入100.50,显示$100.50;输入-100.50,显示$100.50;
输入0.777,显示$.77;输入0,显示$.00
03VARPIC$.$$$,输入1.00,显示$.00;输入0.65,显示$.65;
输入0,显示$.00;
03VARPIC$--,输入17.7,显示$17;输入-17.7,显示$-17;
输入-5,显示$-5
03VARPIC$999.99+,输入100.50,显示$100.50+;输入-100.50,显示$100.50-;
03VARPIC9(3)B9(3),输入55,显示000055;输入1000.78,显示001000;USAGE表示基本或组数据的类型。有BINARY,COMPUTATIONAL(COMP),DISPLAY,INDEX,PACKED-DECIMAL.
JUSTIFIED
03VAR1PICX(5)JUSTIFIEDRIGHT.
03VAR2PICX(5).
输入XYZ,VAR1显示的是"
XYZ",VAR2显示的是"XYZ
"。
BLANKWHENZERO
03VARPIC$999,999.99BLANKWHENZERO.
当字段值为0,这个项目设置为全部空格。
VALUE
定义的时候就赋值。
03VARPICX(5)VALUE"ABCDE".
01VARVALUEALLSPACES.
03VAR1PICXXX.
03VAR2PICXX.
算术语句
COBOL中操作符执行顺序为:取正(+)、取负(-)最高级,指数操作(**)其次,乘(*)、除(/)再其次,加(+)、减(-)最后。ROUNDED
舍入操作。
77APIC9V9VALUE9.1.
77BPIC9.
ADD0.5TOAGIVINGBONSIZEERRORGOTOPROC1.
ADD0.5TOAGIVINGBROUNDEDONSIZEERRORGOTOPROC2.
END-ADD.ONSIZEERROR是当语句出现错误时执行的。本例中第一句话执行没有错误,所以ONSIZEERROR不执行PROC1.第二句话,当0.5加上9.1得到9.6,因为有ROUNDED,所以执行舍入操作,得到10。而B只有1位数字,所以发生错误,执行ONSIZEERROR操作,跳转执行PROC2。
CORRESPONDING(CORR)数据项同名时编写多条语句。ADD和SUBSTRACT有此选项。
01A.
03B.
05B1PIC999V99.
05B1PIC999V99.
05B1PIC999V99.
03C.
05B1PIC999V99.
05B1PIC999V99.
05B1PIC999V99.则语句ADDCORRBTOC.相当于执行了下面3条语句。
ADDB1OFBTOB1OFC.
ADDB2OFBTOB2OFC.
ADDB3OFBTOB3OFC.组项目不一定要格式相同。一个组项目中的内容在另一个组项目中可以没有,数据项顺序也无关紧要。只是严格按照数据项名称对应。
ADDA,BGIVINGC.END-ADD.
将A,B相加放入C。
SUBTRACTA,BFROMC。END-SUBTRACT.
从C中减去A,B.
MULTIPLYABYBGIVINGC.END-MULTIPLY.将A,B相乘放入C。
DIVIDEAINTOBGIVINGC.END-DIVIDE.
将B除于A的结果放入C.
DIVIDEABYBGIVINGC.END-DIVIDE.
将A除于B的结果放入C.
DIVIDEABYBGIVINGCREMAINDERD.
将A除于B的商放入C,余数放入D.
D=A-B*C.
77CPICS99V9.
77DPICS99V9.
DIVIDE3INTO7GIVINGCREMAINDERD.
C的值为2.3,D为0.1。(D=7-3*2.3)COMPUTE
除了取余操作要用DIVIDE外,其他操作都可以用此语句。本语句求值一个算术表达式,并将结果存放在一个或几个变量中。COMPUTE
AROUNDED,B
=X*Y/(N+M)+Z.将X*Y/(N+M)+Z的结果存放在B中,然后舍入后放入A中。
MOVE
MOVEATOB.
也可以用CORR选项。
MOVECORRATOB.
ACCEPT
从键盘或其他输入设备读取数据。
ACCEPTAFROMDEV.
从DEV读取数据到A,也可以省略FROMDEV,表示从键盘读取。
ACCEPTAFROMDATE/DAY/DAY-OF-WEEK/TIME.读取日期,表示为6个字符,如990909(1999年9月9日)。
读取当前日期在年度(前2位)中为第几天(后3位),表示为6个字符,如1994年4月1日表示为94091。
读取当前星期几,表示为1位字符。1表示星期一,7表示星期日。
读取当前时间,表示为8位字符。精确到毫秒。如下午2:41表示为14410000。
DISPLAY
将数据写入输出设备。如监视器(monite),系统输出流和操作员控制台(console)。
DISPLAYAAAAABBBBB[UPONDEV][WITHNOADVANCING]
如果使用UPON选项,dev要与special-names段中的硬件名相关联。
如果使用noadvancing选项,则输出最后一个字符后输出设备仍然保持原位,使下一条display语句还在该位置显示。否则可能到下一行显示。
INITIALIZE
初始化数据,数字和数字编辑数据项初始化为0,其他初始化为空格。INSPECTTALLYING
计算项目中该字符串出现的次数。
INSPECTAATALLYINGBBFORALL“EE”.
从AA中查找有多少个EE,将个数写入BB。
INSPECTAATALLYINGBBFORCHARACTERSBEFORE“E”.
从AA中查找E前面有多少个字符,将个数写入BB。
INSPECTAATALLYINGBBFORCHARACTERSAFTER“C”BEFORE“E”.
从AA中查找C后面E前面有多少个字符,将个数写入BB。
INSPECTAATALLYINGBBFORLEADING“E”.
从AA中第一个字符开始查找有多少个E,如果没有就结束操作,有就将个数写入BB,直至没有。
INSPECTAATALLYINGBBFORLEADING“E”AFTER“C”.
从AA中C后面开始查找有多少个E,如果没有就结束操作,有就将个数写入BB,直至没有。组合例子:
77CSPICX(9)VALUE"REELWHEEL".
77COUNT-0.
77COUNT-1.
77COUNT-2.
MOVE0TOCOUNT-0,COUNT-1,COUNT-2.
INSPECTCSTALLYING
COUNT-0FORALL"E",
COUNT-1FORLEADING"W"AFTER"L",
COUNT-2FORCHARACTERS.
程序首先判断的是字符"R",执行COUNT-0FORALL"E",因为第一个字符不是"E",所以程序转而执行COUNT-1FORLEADING"W"AFTER"L",也不符合要求,
于是程序执行COUNT-2FORCHARACTERS,COUNT-2=1。然后字符串往下一位,判断"E",执行COUNT-0FORALL"E",符合要求,则COUNT-0=1。
有了满足条件的判断,则余下的判断不再执行,字符串再往下一位,判断"E",则COUNT-0=2。接着判断"L",则COUNT-2=2。以此类推,最后结果为COUNT-0=4,
COUNT-1=1,COUNT-2=4。INSPECTREPLACING
用另一个字符串替换这个字符串。
还用上面的例子。
INSPECTCSREPLACINGALL"E"BY"Y".
结果"RYYLWHYYL"
INSPECTCSREPLACINGCHARACTERSBY"Z"AFTER
"L".
结果"REELZZZZZ"
INSPECTCSREPLACINGLEADING"E"BY"Y".
结果不变
INSPECTCSREPLACINGLEADING"E"BY"Z"AFTER
"H".
结果"REELWHZZL"
INSPECTCSREPLACINGFIRST"E"BY"I".
结果"RIELWHEEL"
INSPECTCSREPLACINGFIRST"EE"BY"00",ALL"WH"BY"TH",CHARACTERSBYSPACE.
结果"00TH
"INSPECTCONVERTING
就是INSPECTREPLACING的缩写。
INSPECTCSCONVERTING"EE"TO"00".也可以加上BEFORE,AFTER。STRING
将几个字符串合并成一个字符串。
STRINGADELIMITEDBYSPACE,"!"DELIMITEDBYSIZEINTOC.假设A中的内容是"HELLO",则结果是"HELLO!".
DELIMITEDBYSPACE意思是碰到空格,或到A的结尾或C的结尾,则合并A字符串结束。
DELIMITEDBYSIZE意思是到"!"的结尾或C的结尾,则合并"!"字符串结束。
STRINGAINTOBPOINTERCONOVERFLOWPROC1NOTONOVERFLOW
PROC2.
将A字符串复制到B中由C开始的地址处。如果C小于1或大于B的长度,或A的长度大于B中C到结尾处的长度,则发生
OVERFLOW溢出,执行PROC1。
UNSTRING
将一个字符串中的字符按照要求放入多个变量中。
UNSTRINGAAA[DELIMITEDBY[ALL]B[OR[ALL]C]...]INTO{C[DELIMITERIND][COUNTINE]}...[WITHPOINTERF][TALLYINGING][ONOVERFLOWPROC1][NOTONOVERFLOWPROC2][END-UNSTRING]
将AAA中的字符放入C,如果还有其他变量,如C2,则等C放满后放入C2。
DELIMITEDBY和STRING中的作用一样。表示将AAA中到B为止的字符取出。如果有OR,则表示到B或C字符为止的字符取出。如果有ALL,则如果几个相同的B在一起,则认为是一个B。
DELIMITERIN将B放入D,知道是哪个字符为分隔符。
COUNTIN实际复制到C中的字符数放入E中。
WITHPOINTER和STRIGN中一样。
TALLYINGIN计算有几个接受项。访问一个新的接受项,G值加1。例子:
03CITYPICX(10).
O3ZIP
PICX(10).
77TESTPICX(20).
MOVE"NEWYORK,
UNSTRINGTESTDELIMITEDBY","INTOCITY,ZIP.
执行结果CITY值是NEWYORK.ZIP的值是NY10017。
逻辑和控制语句
IF(A[NOT]>B)等价于IF(A[NOT]GREATERTHANB)
IF(A[NOT]<B)等价于IF(A[NOT]LESSTHANB)
IF(A[NOT]=B)等价于IF(A[NOT]EQUALTOB)
IF(A>=B)等价于IF(AGREATERTHANOREQUALTOB)
IF(A<=B)等价于IF(ALESSTHANOREQUALTOB)
IFAIS[NOT]NUMERIC
数字和可选符号
IFAIS[NOT]ALPHABETICA~Z,a~z字符和空格
IFAIS[NOT]ALPHABETIC-LOWERa~z字符和空格
IFAIS[NOT]ALPHABETIC-UPPERA~Z字符和空格
IFAIS[NOT]CLASS-NAME
SPECIAL-NAMES定义的字符集
例如:SPECIAL-NAMES.
CLASSMYDEFINEIS"12345+ABCDE-".
判断变量是否定义了数值。这个变量是88层的,且要与一个数据项关联。
03STATEPICXX.
88CONVALUESARE"A","B","C".
IFCON...
判断厂家定义运行开关的开/关状态。
SPECIAL-NAMES.
SWITCH-AONSTATUSISA-ON,OFFSTATUSISA-OFF.
IFA-ON...
若开关在开位置,则IFA-ON返回TRUE。
IFAIS[NOT]POSITIVE
判断是否大于0
IFAIS[NOT]NEGATIVE
判断是否小于0
IFAIS[NOT]ZERO
判断是否等于0PERFORM
过程调用,但是不传递参数。
PERFORMPROC1[THROUGHPROC2]
执行完PROC1再执行PROC2.没有THROUGH(THRU)就只执行PROC1.
PERFORMPROC1[THRUPROC2]NTIMES
执行PROC1[或者还有PROC2]N次。
PERFORMPROC1[THRUPROC2][WITHTESTBEFORE/AFTER]UNTILANOTEUQAL0.
执行PROC1[或者还有PROC2]直到A不等于0。WITHTESTBEFORE/AFTER指定在第一次执行之前还是之后判断条件。默认是BEFORE,执行之前判断。
PERFORMPROC1[THRUPROC2][WITHTESTBEFORE/AFTER]VARYINGAFROMBBYCUNTILCONDITION1[AFTERDFROMEBYFUNTILCONDITION2].
相当于FOR循环,将A的值从B开始,以C为单位递增,直到满足CONDITION1。AFTER语句是一个嵌套的FOR循环。VARYING是外循环,AFTER是内循环。A,B可以是索引。
过程也可以直接写入PERFORM中。但是THROUGH就不好用了。语法如下:
PERFORM过程语句END-PERFORM.
PERFORMNTIMES过程语句END-PERFORM.
PERFORM[WITHTESTBEFORE/AFTER]UNTILCONDITION过程语句END-PERFORM.
PERFORM[WITHTESTBEFORE/AFTER]VARYINGAFROMBBYCUNTILCONDITION1过程语句END-PERFORM.
IF语句
IFCONDITIONTHENSTATEMENTS1/NEXTSENTENCEELSESTAT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美容行业中的团队合作与协调技巧试题及答案
- 防学校欺凌课件
- 食品检验实验室的设备与试题及答案
- 公共事业管理考点分析试题及答案
- 2024-2025学年河南省驻马店新蔡一高高一下学期2月月考物理试题及答案
- 计算机基础考试技巧与实例试题及答案
- 大学古代文学史的评估试题及答案
- 拼写误差影响的分析试题及答案
- 2024年CPBA商业分析师模拟考试题目及答案
- 2024年汽车美容师市场需求分析试题及答案
- 《光伏发电工程预可行性研究报告编制规程》(NB/T32044-2018)中文版
- 老人夏季腹泻预防和治疗
- 安全警示教育护理课件
- 类风湿关节炎病情活动度评价表(DAS28)
- A4纸笔记本横格线条打印模板
- 【施工组织设计】内容完整性和编制水平
- 2023公路桥梁钢结构防腐涂装技术条件
- (13)-2.7科学把握理想与现实的辩证统一
- Unit5Poems单元分析讲义高中英语人教版选择性
- 青岛版六年级数学上册 (完美的图形)教学课件(第1课时)
- 2022新能源光伏发电工程竣工决算报告模板
评论
0/150
提交评论