cobol基本语法
更新时间:2024-01-04 06:59:01 阅读量: 教育文库 文档下载
- cobol基本语法推荐度:
- 相关推荐
コボル基本語法
基本語法
一、COBOL基本語法
一、cobol的书写格式(每行)
1、 前6列为序号区(一般不编辑)
2、 第7列为标示列,仅可以写如下几个标示符。
a. “*” 注释符(注释当前行的代码) b “-“ 字符串连接符
3、第8列---11列为A区,包括以下内容。 a 部、节名。 b 层号01
4、第12列---72列为B区,过程部的程序必须写在B区中。 5、第72以后部分不能编辑。 二、cobol的语法结构 (几大部分)
1、 标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明。 2、 环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。
a. 配置节(CONFIGURATION SECTION) ①.指定源计算机(SOURCE-COMPUTE). ②.目标计算机(OBJECT-COMPUTE).
b. 输入输出节(INPUT-OUTPUT SECTION). 文件的物理路径的定义。 方法二:(过程部中动态指定文件)
SELECT FILE-LOG ASSIGN TO SELECT-FILE
ORGANIZATION IS LINE SEQUENTIAL.
在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。 3、数据部(DATA DIVISION)。
程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。(变量的类型结构参照5.变量类型)
a. 文件节(FILE SECTION)
给环境部定义的文件指定一个RECORD变量,读写文件用: FD FILE-LOG.
01 RECORD-LOG PIC X(2000). b. 工作存储节
定义程序中用到的临时变量。
a) COBOL变量定义需要加层号(表示层次关系),
· 层号从01开始
如: 01 I PIC X(10). · 组合项
如: 01 WORK-AREA.
05 NUM-1 PIC 9(09).
1
コボル基本語法
05 STR-1 PIC X(10).
b) 层号依次排列顺序为:01 ,05,10,15,20,30 ·······
c.
连接节
子程序的参数的定义。
4、 过程部(PROCEDURE DIVISION) 程序的主体:程序的逻辑运算在此操作。
a、 每个程序分为四大节(模块),
· 前处理(初始化变量,设定初始值等)
· 主处理(程序业务处理部分) · 后处理(程序正常结束时的出口) · 错误处理(程序异常结束时的出口)
b、 对于子程序,PROCEDURE DIVISION 后应列出LINK节中定义的参数。
如: PROCEDURE DIVISION USING LINK-INPUT-DATA LINK-OUTPUT-DATA. c、 程序结束。
· 主程序 STOP RUN. · 子程序 GO BACK.
5、变量类型
COBOL程序的基本变量类型分为两大类字符串型(X)、数值型(9)。 a 字符串型
01 STRING-A PIC X(100).
100个字符长的变量,程序可以局部操作一个变量( STRING-A(start: length)如: MOVE ALL “X” TO STRING-A(2:10)
(将变量STRING-A第2位开始10长度的内容全赋为”X”字符) b 数值型 种类 DISPLAY 类型 9(m) 说明 无符号整数,每位占用一个字节,显示或输出到文件时,为零的数位显示”0” (1<=m <=18) S9(m) 带符号整数,每位占用一个字节,符号位不占位,显示时,为零的数位显示”0”,符号显示在最后,输出到文件时,为零的数位显示”0”,符号丢失。 (1<=m <=18) DISPLAY 9(m)V9(n) 无符号小数(小数点不显示,不占位)每位占用一个字节,显示或输出到文件时,为零的数位显示”0” (1<=m + n <=18) 例如: 01 I PIC 9(4)V9(2). 变量I占用6个字节,整数位4位,小数位2位。 I = 1.1 时,输出显示时为000110 备注 例如: 01 I PIC 9(8). 变量I占用8个字节。 I = 1 时,输出显示时为00000001 例如: 01 I PIC 9(8). 变量I占用8个字节。 I = 1 时,显示时为00000001+ 输出到文件时为00000001 2 コボル基本語法
S9(m)V9(n) 带符号小数(小数点不显示,不占位)例如: 01 I PIC 9(4)V9(2). 每位占用一个字节,符号位不占位,变量I占用6个字节,整数位4位,显示时,为零的数位显示”0”,符号显示在最后,输出到文件时,为零的数位显示”0”,符号丢失。 (1<=m + n <=18) Comp,comp-5,comp-3 9(m) comp-5 无符号整数,数据以二进制方式存贮,显示和9(m) 一样,不能出力 (1<= m <=18) S9(m) comp-5 有符号整数,数据以二进制方式存贮,显示和S9(m) 类似,只是符号在前面,不能出力, (1<= m <= 18) 小数位2位。 I = 1.1 时,显示时为000110+ 输出到文件时为000110 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) 注: 1、对于出力型数值变量,可以用9代替Z,它们的区别是:
结果为零的整数部高位,小数部低位: Z型变量用空格显示,9型变量用零显示 2、COBOL语言中数值型变量种类很多,针对不同的要求有不同的数值类型。 c、在COBOL变量定义时,可以加入格式字符串字符。 d、不同类型变量间赋值。 整数
1、 字符串中数值部分可以作为对应长度的DISPLAY型变量给其它各种数值型变量。
2、 DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但截去超出的高位。 3、 COMP型变量被赋值时,超出它表示范围的数不能被接受。
小数
1、 DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但整数部截去超出的高位,
小数部截去低位。
2、 COMP型变量被赋值时,整数部超出它表示范围的数不能被接受,小数部超出它表示范围的数可以被接受,
但小数部截去低位
注: 以上所述赋值变量为任何类型的数值型变量(经过严格测试得出结论)。
3
コボル基本語法
e、字符型比较。
· 字符串比较时,系统自动截去尾部空格(如 “a “ = “a” )。 · 数字的数值形式和数字字符形式相等(如 “1234567890” = 1234567890) · 综合以上两点, 有 “12 “ = 12 二、 基本语法:
1、赋值语句MOVE。
a、 将一个变量赋给另个变量 move a to b.
b、将一个变量同时赋给另外两个变量。 Move a to b c . c、将一个变量全部赋为某个字符 move all “x” to a. d、对于赋值溢出,截取的方式为. · 字符型变量截去左边的溢出部分。
· 数值型变量截去整数部高位、小数部低位的溢出部分。
e、 组和项传送,它们的数据结构 必须相同
f、 对于组合项成员的局部引用,应该如下:
01 A-AREA.
05 STR-1 PIC X(10). 05 STR-2 PIC X(10).
01 B-AREA.
05 STR-1 PIC X(20). 05 STR-2 PIC X(10).
MOVE STR-1 OF A-AREA(1:4) TO STR-1 OF B-AREA(1:4).
3、 四则运算
原则上,四则运算不用助记符语句,但对于简单运算( ++,--),可采用助记符语句。
a、 加法( ADD 1 TO NUM-1)
b、 减法(SUBTRACT 1 FROM NUM-1) c、 其它所有运算均采用COMPUTE 语句
COMPUTE NUM-1 = NUM-2 + NUM3 * 10 运算符如下: + 加
- 减 * 乘 / 除 ** 指数
在COMPUTE语句中,变量和运算符间至少留有一个空格。
4
コボル基本語法
4、 重定义语句REDEFINES(数据部中使用) 01 A PIC X(10) VALUE SPACE.
01 B REDEFINES A PIC 9(10).
变量A,B使用同一个空间,重定义时,重定义变量必须紧跟着被重定义变量后面,并且在字符串同数值一起重定义时,如果对变量进行初始化,变量会初始化为空格。 5、 数组关键词OCCURS OCCURS 整数 TIMES. a.简单数组
01 A OCCURS 10 PIC X(30). b. 组合项数组
01 A.
05 B
OCCURS 10.
10 C PIC X(10). 10 D PIC X(20). 注意:引用数组中某一元素如下
DISPLAY C OF B OF A(1) “@@”. 6、 连结语句STRING
STRING A, B, C DELIMITED BY SIZE INTO D . ·将字符串A, B, C按它们定义长度连接赋给变量D. STRING A, B, C DELIMITED BY SPACE INTO D . ·将字符串A, B, C连接赋给变量D,去掉中间所有的空格. STRING “AAAAAAA”
DELIMITED BY SIZE
“BBBBBBB ” DELIMITED BY SIZE B
DELIMITED BY SIZE
INTO D .
·将字符串和字符串变量连接赋给变量D. 7、 IF语句
· IF 条件
THEN
语句 (无 “.”结束)
ELSE
语句 (无 “.”结束) END-IF.
.
注: IF 语句最多只能使用三层嵌套,条件用括号括起来。 10 关系运算符
运算符 > < 含义 大于 小于 5
コボル基本語法
注:
判断字符串能否转换为数字。 NUMERIC NOT NUMERIC IS NOT NUMERIC 11、PERFORM 语句 PERFORM XXX-RTN.
· 调用子节,直到遇到第一个只包含EXIT语句的段中止,回到该调用语句的下一条语句。 EXIT只与它搭配有效。 所以节的定义规定如下:
XXX-RTN SECTION. 语句块 ········ XXX-EXT. EXIT.
PERFORM XXX-RTN N TIMES. · 循环调用子节N次
PERFORM XXX-RTN UNTIL N> 30. · 循环调用子节,直到N 大于30。
PERFORM UNTIL 表达式 语句 ·······
END-PERFORM.
· 循环调用语句块,表达式判断在语句块前进行。 PERFORM
VARYING
X
FROM A BY B UNTIL X > 12
<= >= NOT = = 等于 不等于 语句 ······· END-PERFORM.
· 循环调用语句块,相当于FOR 循环。 12、EVALUATE 语句
EVALUATE 变量、常量、表达式 WHEN ANY TRUE FALSE
(NOT) 常量1 THRU (THROUGH) 常量2 WHEN OTHER . END – EVALUATE · ANY :任何变量、常量值
· TRUE、FALSE :关系表达式的结果
6
コボル基本語法
· (NOT) 常量1 THRU (THROUGH) 常量2: 值(不)在常量1和常量2 构成的闭区间 · 另外,在WHEN 后面可以包含简单的关系表达式。 如:
EVALUATE A WHEN => 10 EVALUATE B
WHEN = 1 OR = 2 OR = 3 语句 ···· WHEN OTHER 语句 ···· END-EVALUATE WHEN OTHER 语句 ···· END-EVALUATE.
13、另外,不同的COBOL系统提供了不同内部函数,建议少用内部函数,以下提供几个通用的内部函数
· ORD 取得字符的ASICII码 如:
MOVE FUNCTION ORD (“A”) TO NUMBER.
? UPPER-CASE 字母小写转换成大写 如:
MOVE FUNCTION UPPER-CASE (STRING(START:1)) TO STRING(START:1)
· LOWER -CASE 字母小写转换成大写 如:
MOVE FUNCTION LOWER-CASE (STRING(START:1)) TO STRING(START:1) · REVERSE 对字符串中所有字符进行倒序 如:
MOVE FUNCTION REVERSE(STRING-1) TO STRING · LENGTH 取得变量的定义长度,如:
COMPUTE LEN = FUNCTION LENGTH(STRING)
二、PRO*COBOL基本語法
COMPLA使用的PRO*COBOL是ORACLE公司提供的在COBOL程序中嵌入SQL语句的一种方法,使得程序方便地访问操作ORACLE数据库;PRO*COBOL程序经过ORACLE提供的预编译器预编译生成中间COBOL程序后,程序中所有的SQL语句直接调用ORACLE库函数,再经过COBOL编译器同一般COBOL程序一样编译生成各种可执行模块,由于程序中直接调用ORACLE库函数,所以它们访问操作ORACLE数据库的速度很快,基本语法如下。 一、特点。
· 所有的SQL或数据库操作相关语句均被括在” EXEC SQL” 和 “END-EXEC”之间,并且它们只能包含一条语
句,如:
EXEC SQL SQL语句 END-EXEC.
· 所有访问操作数据库的变量都必须是主变量。
· “EXEC SQL” ,”END-EXEC’及其包含的语句都必须从12列或12列以后开始。 三、 数据部内容。
7
コボル基本語法
· 引用两个对象SQLCA, ORACA.
EXEC SQL INCLUDE SQLCA END-EXEC. EXEC SQL INCLUDE ORACA END-EXEC.
· 主变量定义。
EXEC SQL BEGIN DECLARE SECTION END-EXEC. (主变量定义开始) EXEC SQL END DECLARE SECTION END-EXEC.(主变量定义结束) ·· 主变量都必须定义在这里,具体定义和一般的COBOL变量一样。 ·· VARCHAR型变量(可变长度).
该变量定义就是在X型变量后加关键字VARYING.如: 05 STRING PIC X(100) VARYING. 它实际包含两部分(预编译后的中间COBOL程序可见) 05 STRING.
06 STRING-LEN PIC S9(4) COMP. 06 STRING-ARR PIC X(100).
STRING-LEN 表示字符串的实际长度,STRING-ARR 表示字符串的实际内容。 SQL语句中,只能用STRING.
从表中得到值时,STRING-LEN 自动被赋值。
向表中写入值时,STRING-LEN 需要手工指定长度,SQL将STRING(1:STRING-LEN)部分有效字符串写到表中。 定义主变量时,引用COPY句: EXEC SQL INCLUDE WSIT1101.cpy END-EXEC. · 游标的定义可以放在数据中。 四、 数据部中SQL语句的基本语法
1)、错误扑获
ORACLE错误扑获是一个全局性的标志,在一个事务(在PRO*COBOL中,ORACLE事务以COMMIT或ROLLBACK为分割点)中,后一个错误扑获会覆盖前一个错误扑获设置。 · 遇到SQL警告(SQLCODE > 0 )继续
EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC.
· 遇到SQL错误(SQLCODE < 0 )继续
EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.
· 遇到SQL错误(SQLCODE < 0 )跳转
EXEC SQL WHENEVER SQLERROR GOTO ORA-ERROR END-EXEC.
2)、 数据连接
数据库连接在一般的项目开发中用不到,只用于测试程序ドラバ中(不连接外部数据库)
· 方式一(USERNAME 和PASSWORD分开,如:USERNAME = “OPS$LAPROC51” PASSWORD = “LAPROC”)
EXEC SQL
CONNECT :USERNAME IDENTIFIED BY :PASSWD END-EXEC.
· 方式二(USERNAME 和PASSWORD合并,如:UID = “OPS$LAPROC51/LAPROC”)
EXEC SQL
CONNECT :UID END-EXEC.
8
コボル基本語法
3)、 静态SQL语句 · 单条记录的检索
EXEC SQL
SELECT ENAME, SAL, COMM
INTO :EMP-NAME, :SALARY, :COMMISSION:COMM-IND FROM EMP
WHERE EMPNO = :EMP-NUMBER
END-EXEC.
注: 上例中的COMM-IND为指示变量,在检索操作中每个接受主变量都可指定一个指示变量(9(04) COMP型),它
用来判断主变量是不是接受到一个空值(NULL)(主变量不能接受空值),当指示变量为-1时,表示对应的主变量应该接受到一个空值(主变量自己表示不出来)
· 多条记录的检索(CURSOR 游标) ·· 游标的定义
EXEC SQL
DECLARE CUR_NAME CURSOR FOR
SELECT MSG_CD , MSG_1,MSG_2 FROM
WWWTMSG1
END-EXEC.
游标的定义:将SQL查询语句声明为一个游标,不调用ORACLE库函数,不会更新SQLCODE的值。 ·· 游标的打开 EXEC SQL
OPEN CUR_NAME END-EXEC.
游标的打开:用游标定义的SQL语句检索数据库,将检索结果生成一个游标对象,(此时游标指针在第一条
记录前一位置,无法确定游标中有没有记录)。
·· 游标中记录的抽取
EXEC SQL
FETCH CUR_NAME
INTO : HST-MSG-CD , : HST-MSG-1,:HST-MSG-2
END-EXEC.
游标中记录的抽取:将游标中的记录抽取到相应的主变量中,一次抽取一条。 ·· 游标的关闭 EXEC SQL
CLOSE CUR_NAME END-EXEC.
游标的关闭: 将现有的游标对象释放,游标再次打开前,必须关闭。 · 更新
EXEC SQL
UPDATE WWWTMSG1
SET MSG_1 = : WK-MSG-1,
9
コボル基本語法
MSG_2 = : WK-MSG-2 WHERE MSG_CD = : WK-MSG-CD
END-EXEC. · 删除
EXEC SQL
DELETE FROM WWWTMSG1 WHERE MSG_CD = : WK-MSG-CD END-EXEC · 插入 EXEC SQL
INSERT
INTO WWWTMSG1(MSG_CD, MSG_1, MSG_2) VALUES (:WK-MSG-CD, :WK-MSG-1, :WK-MSG-2) END-EXEC · 事务的提交
·· 方式一(释放连接)
EXEC SQL COMMIT WORK RELEASE END-EXEC. ·· 方式二(不释放连接)
EXEC SQL COMMIT WORK END-EXEC. · 事务的回滚
·· 方式一(释放连接)
EXEC SQL ROLLBACK WORK RELEASE END-EXEC. ·· 方式二(不释放连接)
EXEC SQL ROLLBACK WORK END-EXEC. · 典型的SQLCODE值 ·· SELECT
1403 : 没有检索到记录 ·· FETCH(游标中记录的抽取)
1403 : 游标指针FETCH到游标的尾部 ·· UPDATE
1403 : 没有更新的记录 -60 : 死锁
-2049: 由于死锁导致系统超时 ·· DELETE
1403 : 没有删除的记录 -60 : 死锁
10
正在阅读:
cobol基本语法01-04
2015西城高三一模数学(理科)06-03
钢制家具生产项目可行性研究报告06-09
上海大学世界史专业考研经验01-11
菜品拍摄技巧08-10
美国现代企业内部审计 现场审计(范例)03-09
物理化学课后习题11-02
今晚我好紧张日记10-29
2012泉州市《加强和创新社会管理》(继续再教育)试题全集03-08
观察日记通用4篇03-25
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 语法
- 基本
- cobol
- 实验4 使用T-SQL语言创建和修改表答案
- 仪器分析答案
- 高校科研经费报账难的问题及对策
- 房证科备案材料
- 10.26大赛创业项目评审会简讯 - 图文
- 2017 - 华工 - 马克思主义政治经济学原理随堂练习答案
- 大学生环境保护意识调查报告(终稿)
- 一至六年级上册语文知识能力点汇总
- 没上过大学学啥技术就业好
- 船舶操纵
- 《数据库理论与技术》复习题-2008小妖版
- 江苏省中小学教师班主任知识网络竞赛试题答案
- Modlule The Great Sport Personality - 图文
- 2009年无锡中考试卷
- 2015年江苏省中小学教师班主任知识网络竞赛(带答案)
- 220kv输变电项目可行性研究分析报告
- 全国水利工程协会五大员考试试题及答案
- 教科版六年级语文上册第五单元提升练习题及答案
- 电子设备装接工国家职业标准
- 营改增税负增加现象分析