cobol基本语法new.docx
- 文档编号:23223408
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:27
- 大小:25.88KB
cobol基本语法new.docx
《cobol基本语法new.docx》由会员分享,可在线阅读,更多相关《cobol基本语法new.docx(27页珍藏版)》请在冰豆网上搜索。
cobol基本语法new
基本語法
一、COBOL基本語法
COBOL是CommonBusiness-OrientedLanguage(通用商业语言)
一、cobol的书写格式(每行)
● 不区分大小写
例:
ABC等同于Abc
● COBOL每个句子后要加句号“.”
例:
PERFORM1000-INIT.
※但在特殊的语句体里是不能写句号、包括:
条件、循环、调用
例:
IFIN1-AREA=HIGH-VALUE
MOVEFLG-ONTOFLG-END
END-IF.
● 运算符和等号左右两边留空格。
()左右两边留空格。
例:
IF(IN1-AREA=HIGH-VALUE)OR(IN2-AREA=SPACE)
……
END-IF.
● 空格必须是半角。
● COBOL程序纸每行有80列,一行分为几个区
标号区
续行区
A区
B区(正文区)
注释
16
7
811
1272
7380
一般不编辑
部头
过程部的程序必须写在B区
第72列以后部分不能编辑
节头
段头
层号01
层号77
文件描述符
FD
1、第7列为标示列,仅可以写如下几个标示符。
a.“*”注释符(注释当前行的代码)
b.“/“注释符(注释当前行的代码,程序编译时,强制程序清单另起一页,不建议使用)
c.“-“字符串连接符
d.“D”DEBUG行标示符(程序为DEBUG模式时,标有该标示符的语句行代码执行,否则和注释行效果一样)
2、在COBOL中数据项的定义是由若干个层来组织的,即:
一个数据项的定义要包括(层号、数据项名称、定义语句、数据类型及数据长度等部分组成)77层用来描述独立的数据项,66和88是特殊层。
二、cobol的语法结构(几大部分)
节和段
除标识部没有节,每个部下面有若干个节(SECTION)。
每一节下面可包括若干段。
※程序中四大部分缺一不可
1、标识部(IDENTIFICATIONDIVISION):
提供程序的一般性文档说明。
元素①.IDENTIFICATIONDIVISION.//部起始标识
②.PROGRAM-ID.XXXXX.//程序名称
③.AUTHOR.XXXXX.//作者名称
④.INSTALLAION.XXXXX.//公司名称
⑤.DATE-WRITTEN.XXXXX.//修改日期
⑥.DATE-COMPILED.XXXXX.//编译日期
⑦.SECURITY.XXXXX.//安全信息
2、环境部(ENVIRONMENTDIVISION):
提供程序外部有关的项目。
a.配置节(CONFIGURATIONSECTION)
①.指定程序编译计算机型号(SOURCE-COMPUTE).
②.指定程序运行计算机型号(OBJECT-COMPUTE).
③.设置debug模式(SOURCE-COMPUTEIBM-390WITHDEBUGGINGMODE)
④.指定读环境变量设置.
b.输入输出节(INPUT-OUTPUTSECTION)。
FILE-CONTROL.//文件信息描述段标识
I-O-CONTROL.//输入输出描述段标识
文件的物理路径的定义。
方法一:
(写死文件路径)
SELECTFILE-LOGASSIGN
"/usr/sample/log/sample1.log"
ORGANIZATIONISLINESEQUENTIAL.
方法二:
(过程部中动态指定文件)
SELECTFILE-LOGASSIGNTOSELECT-FILE
ORGANIZATIONISLINESEQUENTIAL.
在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。
方法三:
(环境变量中动态指定文件)
SELECTFILE-LOGASSIGNTOEXTERNALEXTFILELOG
ORGANIZATIONISLINESEQUENTIAL.
在该程序运行前,设置环境变量:
setenvdd_EXTFILELOG/usr3/WSI/nco035/lsc/tstlog/WSIXXXX.log
3、数据部(DATADIVISION)。
程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。
a.文件节(FILESECTION)
给环境部定义的文件指定一个RECORD变量,读写文件用:
FDFILE-LOG.
01RECORD-LOGPICX(2000).
b.工作存储节(WORKING-STORAGESECTION)
定义程序中用到的中间变量。
a)COBOL变量定义需要加层号(表示层次关系),
·层号从01开始
如:
01IPICX(10).
·组合项
如:
01WORK-AREA.
05NUM-1PIC9(09).
05STR-1PICX(10).
b)层号依次排列顺序为:
01,05,10,15,20,30·······
c.连接节(LINKAGESECTION)
调用子程序的参数的定义。
d.通讯节(COMMUNICATIONSECTION)
e.报表节(REPORTSECTION)
4、过程部(PROCEDUREDIVISION)
程序的主体:
程序的逻辑运算在此操作。
a、每个程序分为四大节(模块),
·前处理(初始化变量,设定初始值等)
·主处理(程序业务处理部分)
·后处理(程序正常结束时的出口)
·错误处理(程序异常结束时的出口)
b、对于子程序,PROCEDUREDIVISION后应列出LINK节中定义的参数。
如:
PROCEDUREDIVISIONUSINGLINK-INPUT-DATALINK-OUTPUT-DATA.
c、程序结束。
·主程序STOPRUN.
·子程序GOBACK.
三、变量类型
COBOL程序的基本变量类型分为两大类字符串型(X)、数值型(9)。
●字符串型
01STRING-APICX(100).
100个字符长的变量,程序可以局部操作一个变量(STRING-A(start:
length)如:
MOVEALL“X”TOSTRING-A(2:
10)
(将变量STRING-A第2位开始10长度的内容全赋为”X”字符)
●数据常量
1.ZERO:
表示一个或多个零字符
2.SPACE:
表示一个或多个空格字符
3.HIGH-VALUE:
表示一个或多个具有“最高值”的字符(二进制11111111)
4.LOW-VALUE:
表示一个或多个具有“最高值”的字符(二进制00000000)
●数值型
种类
类型
说明
备注
DISPLAY
9(m)
无符号整数,每位占用一个字节,显示或输出到文件时,为零的数位显示”0”。
(1<=m<=18)
例如:
01APIC9(8).
变量A占用8个字节。
A=1时,输出显示时为00000001
S9(m)
带符号整数,每位占用一个字节,符号位不占位,显示时,为零的数位显示”0”,符号显示在最后,输出到文件时,为零的数位显示”0”,符号丢失。
(1<=m<=18)
例如:
01APIC9(8).
变量A占用8个字节。
A=1时,显示时为00000001+
输出到文件时为00000001
DISPLAY
9(m)V9(n)
无符号小数(小数点不显示,不占位)每位占用一个字节,显示或输出到文件时,为零的数位显示”0”,可用于计算。
(1<=m+n<=18)
例如:
01APIC9(4)V9
(2).
变量A占用6个字节,整数位4位,小数位2位。
A=1.1时,输出显示时为000110
S9(m)V9(n)
带符号小数(小数点不显示,不占位)每位占用一个字节,符号位不占位,显示时,为零的数位显示”0”,符号显示在最后,输出到文件时,为零的数位显示”0”,符号丢失。
(1<=m+n<=18)
例如:
01APIC9(4)V9
(2).
变量A占用6个字节,整数位4位,小数位2位。
A=1.1时,显示时为000110+
输出到文件时为000110
出力
+Z(m)
带符号整数,每位占用一个字节,符号位占位,显示和输出到文件时,为零的高位显示为空格,正数时,符号位为”+”;负数时,符号位为”-”。
(1<=m<=18)
例如:
01APIC+Z(4).
变量A占用5个字节,
A=1时,输出显示时为+1
A=-1时,输出显示时为-1
-Z(m)
带符号整数,每位占用一个字节,符号位占位,显示和输出到文件时,为零的高位显示为空格,正数时,符号位为空格;负数时,符号位为”-”。
(1<=m<=18)
例如:
01APIC+Z(4).
变量A占用5个字节,
A=1时,输出显示时为1
A=-1时,输出显示时为-1
+Z(m).Z(n)
带符号小数,每位占用一个字节,符号、小数点占位,显示和输出到文件时,整数部为零的高位显示为空格,小数部为零的低位显示为0;正数时,符号位为”+”负数时,符号位为”-”(1<=m+ n<=18)
例如:
01APIC+Z(4).Z
(2)
变量A占用8个字节,
A=1.1时,输出显示时为+1.10
A=-1.1时,输出显示时为-1.10
-Z(m).Z(n)
带符号小数,每位占用一个字节,符号、小数点占位,显示和输出到文件时,整数部为零的高位显示为空格,小数部为零的低位显示为空格;正数时,符号位为”+”负数时,符号位为”-”(1<=m+ n<=18)
例如:
01APIC+Z(4).Z
(2)
变量A占用8个字节,
A=1.1时,输出显示时为1.1
A=-1时,输出显示时为-1.1
Comp,comp-5,comp-3
SQL文中用于计算的变量
9(m)comp-5
无符号整数,数据以二进制方式存贮,显示和9(m)一样,不能出力
(1<=m<=18)
S9(m)comp-5
有符号整数,数据以二进制方式存贮,显示和S9(m)类似,只是符号在前面,不能出力,
(1<=m<=18)
9(m)v9(n)comp-5
无符号小数,数据以二进制方式存贮,显示和9(m)v9(n)一样,不能出力
(1<=m+n<=18)
S9(m)v9(n)comp-5
有符号整数,数据以二进制方式存贮,显示和S9(m)v9(n)类似,只是符号在前面,不能出力,
(1<=m+n<=18)
注:
①、对于出力型数值变量,可以用9代替Z,它们的区别是:
结果为零的整数部高位,小数部低位:
Z型变量用空格显示,9型变量用零显示
②、COBOL语言中数值型变量种类很多,针对不同的要求有不同的数值类型。
●不同类型变量间赋值。
◎ 整数
1、字符串中数值部分可以作为对应长度的DISPLAY型变量给其它各种数值型变量。
2、DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但截去超出的高位。
3、COMP型变量被赋值时,超出它表示范围的数不能被接受。
◎ 小数
1、DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但整数部截去超出的高位,小数部截去低位。
2、COMP型变量被赋值时,整数部超出它表示范围的数不能被接受,小数部超出它表示范围的数可以被接受,但小数部截去低位
注:
以上所述赋值变量为任何类型的数值型变量(经过严格测试得出结论)。
●字符型比较。
·字符串比较时,系统自动截去尾部空格(如“a“=“a”)。
·数字的数值形式和数字字符形式相等(如“1234567890”=1234567890)
·综合以上两点,有“12“=12
四、基本语法:
(一)操作语句
1、赋值语句MOVE。
a、将一个变量赋给另个变量
MOVEATOB.
b、将一个变量同时赋给另外两个变量。
MOVEATOBC.
c、将一个变量全部赋为某个字符
MOVEALL"X"TOA.
d、对于赋值溢出,截取的方式为.
·字符型变量截去右边的溢出部分。
·数值型变量截去整数部高位、小数部低位的溢出部分。
e、组和项传送,它们的数据结构必须相同
f、对于组合项成员的局部引用,应该如下:
01A-AREA.
05STR-1PICX(10).
05STR-2PICX(10).
01B-AREA.
05STR-1PICX(20).
05STR-2PICX(10).
MOVESTR-1OFA-AREA(1:
4)TOSTR-1OFB-AREA(1:
4).
2、显示语句DISPLAY
a、向控制台打印显示的信息。
DISPLAY“A=”A.
3、接受语句ACCEPT
a、接受从控制台上的输入值。
ACCPETA.
4、四则运算
原则上,四则运算不用助记符语句,但对于简单运算(++,--),可采用助记符语句。
a、加法(ADD1TONUM-1.
ADDA,BGIVINGC.)
b、减法(SUBTRACT1FROMNUM-1.
SUBTACTB,CFROMAGIVINGX,Y)
c、乘(MULTIPLYABYB.)
d、除(DIVIDEAINTOB.
DIVIDEABYB.)
e、四舍五入(ADDATOBROUNDED.)
f、溢出处理(ONSIZEERROR强制语句)
g、其它所有运算均采用COMPUTE语句
COMPUTENUM-1=NUM-2+NUM3*10
运算符如下:
+加
-减
*乘
/除
**指数
在COMPUTE语句中,变量和运算符间至少留有一个空格。
5、重定义语句REDEFINES(数据部中使用)
01APICX(100)VALUESPACE.
01BREDEFINESA.
05AAPICX(10).
05BBPICX(30).
05CCPICX(60).
变量A,B使用同一个空间,重定义时,重定义变量必须紧跟着被重定义变量后面,并且在字符串同数值一起重定义时,如果对变量进行初始化,变量会初始化为空格。
6、数组关键词OCCURS
OCCURS整数TIMES.
a.简单数组
01AOCCURS10PICX(30).
b.组合项数组
01A.
05BOCCURS10.
10CPICX(10).
10DPICX(20).
注意:
引用数组中某一元素如下
DISPLAYCOFBOFA
(1).
7、检查替换语句INSPECT.
INSPECTATALLYINGNFORALL‘X’.
·在字符串A中找‘X’,找到后在计数器N中加1.
INSPECTAREPLACINGALL‘X’BY‘A’.
·将字符串A中所有的‘X’字符替换成‘A’.
还可以在最后加BEFORE‘X’或AFTER‘X’,即在某一字符前或后的查找或替换。
8、字符串操作语句STRING,UNSTRING
a.STRINGA,B,CDELIMITEDBYSIZEINTOD.
·将字符串A,B,C按它们定义长度连接赋给变量D.
STRINGA,B,CDELIMITEDBYSPACEINTOD.
·将字符串A,B,C连接赋给变量D,去掉中间所有的空格.
STRING“AAAAAAA”DELIMITEDBYSIZE,
“BBBBBBB”DELIMITEDBYSIZE,
BDELIMITEDBY‘X’
INTOD.
·将字符串和字符串变量连接赋给变量D.
b.UNSTRINGADELIMITEDBYSIZEINTOB,C,D.
·将字符串A按长度拆分到B,C,D中.
UNSTRINGADELIMITEDBY‘X’INTOB,C.
·将字符串A中‘X’之前的给B,其余给C.
UNSTRINGADELIMITEDBYALL‘’INTOB,C.
·将字符串A以空格分割,赋给B,C.
9、FILLER语句//用来临时占用不使用的数据位置,FILLER不能赋值,不被初始化
格式:
层号 FILLERPIC类型 长度
(二)逻辑语句
1、IF语句
IF语句包含以下三种:
·IF条件
THEN
语句(无“.”结束)
END-IF.
·IF条件
THEN
语句(无“.”结束)
ELSE
语句(无“.”结束)
END-IF.
·IF条件
THEN
语句(无“.”结束)
ELSE
IF条件
THEN
语句(无“.”结束)
END-IF
END-IF.
注:
IF语句最多只能使用三层嵌套,条件用括号括起来。
2、关系运算符
助记符
运算符
含义
ISGREATERTHAN
>
大于
ISLESSTHAN
<
小于
ISEQUALTO
=
等于
ISNOTGREATERTHAN
NOT><=
小于等于
ISNOTLESSTHAN
NOT<>=
大于等于
ISNOTEQUALTO
NOT=
不等于
注:
判断字符串能否转换为数字。
NUMERICNOTNUMERIC
ISNOTNUMERIC
3、PERFORM语句
PERFORM节名称.
·调用子节,直到遇到第一个只包含EXIT语句的段中止,回到该调用语句的下一条语句。
EXIT只与它搭配有效。
所以节的定义规定如下:
XXXSECTION.
语句块········
XXX-EXT.
EXIT.
PERFORM节名称NTIMES.
·循环调用子节N次
PERFORMXXXUNTILN>30.
·循环调用子节,直到N大于30。
PERFORMUNTIL表达式
语句·······
END-PERFORM.
·循环调用语句块,表达式判断在语句块前进行。
PERFORMVARYINGXFROMABYBUNTILX>12
语句·······
END-PERFORM.
·循环调用语句块,相当于FOR循环。
4、EVALUATE语句
EVALUATE变量、常量、表达式
WHENANY
TRUE
FALSE
(NOT)常量1THRU(THROUGH)常量2
WHENOTHER.
END–EVALUATE
·ANY:
任何变量、常量值
·TRUE、FALSE:
关系表达式的结果
·(NOT)常量1THRU(THROUGH)常量2:
值(不)在常量1和常量2构成的闭区间
·另外,在WHEN后面可以包含简单的关系表达式。
如:
EVALUATEA
WHEN=>10
EVALUATEB
WHEN=1OR=2OR=3
语句····
WHENOTHER
语句····
END-EVALUATE
WHENOTHER
语句····
END-EVALUATE.
5、另外,不同的COBOL系统提供了不同内部函数,建议少用内部函数,以下提供几个通用的内部函数
·ORD取得字符的ASICII码如:
MOVEFUNCTIONORD(“A”)TONUMBER.
•UPPER-CASE字母小写转换成大写如:
MOVEFUNCTIONUPPER-CASE(STRING(START:
1))TOSTRING(START:
1)
·LOWER-CASE字母小写转换成大写如:
MOVEFUNCTIONLOWER-CASE(STRING(START:
1))TOSTRING(START:
1)
·REVERSE对字符串中所有字符进行倒序如:
MOVEFUNCTIONREVERSE(STRING-1)TOSTRING
·LENGTH取得变量的定义长度,如:
COMPUTELEN=FUNCTIONLENGTH(STRING)
(三)控制语句
1.GOTO语句//GOTO语句将控制转入过程部中的另一个位置
GOTO标示
2.CONTINUE语句//CONTINUE语句什麽也不干,只是一个语句占位符
3.STOP语句 //STOP语句结束程序或暂停程序直到操作员将其重新启动
4.EXIT语句 //EXIT语句什麽也不干,作为段中唯一的语句,提供程序中插入段名的位置
(四)逻辑处理
1.子程序
①.子程序类型:
外部子程序、内部子程序
②.参数区定义:
数据部的数据节
A.数据部:
WORKING-STORAGESETION
③.程序调用:
PERFORM、CALL ...... USING ......
2.文件访问
①.信息定义:
环境部的文件节、数据部的文件节
A.环境部:
INPUT-OUTPUTSECTION(FILE-CONTROL、I-O-CONTROL)
B.数据部:
FILESECTION(FD)
②.文件操作:
过程部的文件节
A.OPEN、CLOSE
B.READ、WRITE
3.数据库访问
①.DB类型:
DB2、ORACLE、SQLSERVER
②.缓冲区定义:
数据部的数据库节
A.数据部:
WORKING-STORAGESETION
③.数据操作:
过程部的数据库节
A.EXECSQL ...... END-EXEC.
B.OPEN、CLOSE、SELECT...
④.连接数据库
A.连接到默认数据库,指定用户名
EXECSQL
CONNECT:
USRNAMEIDENTIFIEDBY:
PASSWD
END-EXEC.
B.
EXECSQL
CONNECT:
UID=“O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cobol 基本 语法 new