下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基本語法、 COBOL 基本語法cobol 的书写格式 ( 每行)1、前 6 列为序号区 (一般不编辑 )2、第 7 列为标示列,仅可以写如下几个标示符。a.“ ” 注释符 (注释当前行的代码 ) b “ “ 字符串连接符3、第 8 列 -11 列为 A 区,包括以下内容。a 部、节名。b 层号 014、第 12 列 -72 列为 B 区,过程部的程序必须写在 B 区中。5、第 72 以后部分不能编辑。cobol 的语法结构 ( 几大部分 )1、 标示部 (IDENTIFICATION DIVISION): 提供程序的一般性文档说明2、 环境部 (ENVIRONMENT DIVISION):
2、提供程序外部有关的项目。a. 配置节 (CONFIGURATION SECTION). 指定源计算机 (SOURCE-COMPUTE). 目标计算机 (OBJECT-COMPUTE).b.输入输出节 (INPUT-OUTPUT SECTION). 文件的物理路径的定义。方法二 :(过程部中动态指定文件 )SELECT FILE-LOG ASSIGN TOSELECT-FILEORGANIZATION IS LINE SEQUENTIAL .在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。3、数据部(DATA DIVISION)。程序中的变量都在数据部
3、中定义,Cobol中没有全局变量和局部之分。 ( 变量的类型结构参照a.文件节(FILE SECTION)给环境部定义的文件指定一个RECORD变量,读写文件用:FD FILE-LOG.01 RECORD-LOG PIC X(2000).b.工作存储节定义程序中用到的临时变量。5.变量类型 )a) COBOL变量定义需要加层号(表示层次关系),?层号从01开始如: 01 I PIC X(10).? 组合项如: 01 WORK-AREA.05 NUM-1 PIC 9(09).b)层号依次排列顺序为:01 ,05,10,15,20,30.c.连接节子程序的参数的定义。4、过程部(PROCEDURE
4、 DIVISION)程序的主体:程序的逻辑运算在此操作。a、每个程序分为四大节(模块),?前处理(初始化变量,设定初始值等)-主处理(程序业务处理部分)-后处理(程序正常结束时的岀口)-错误处理(程序异常结束时的岀口)b、 对于子程序,PROCEDURE DIVISION 后应列岀 LINK 节中定义的参数。女口:PROCEDURE DIVISION USING LINK-INPUT-DATA LINK-OUTPUT-DATA.c、 程序结束。-主程序 STOP RUN.-子程序 GO BACK.5、变量类型a字符串型01 STRING-APIC X(100).100个字符长的变量,程序可以局
5、部操作一个变量(STRING-A(sta比length)女口:MOVE ALL X”TO STRING-A(2:10)(将变量STRING-A第2位开始10长度的内容全赋为” X字符)b数值型种类类型说明备注DISPLAY9(m)无符号整数,每位占用一个字节,显示或输岀到文件时,为零的数位 显示”0(1=m =18)例如:01 IPIC 9(8).变量1占用8个字节。I = 1时,输出显示时为0000000105 STR-1PIC X(10).COBOL程序的基本变量类型分为两大类字符串型(X)、数值型(9)S9(m)带符号整数,每位占用一个字节,符号位不占位,显示时,为零的数 位显 示”,符
6、号显示在最后,输岀 到文件时, 为零的数位显示”,符号丢失。(1=m =18)例如:01 IPIC 9(8).变量1占用8个字节。I = 1时,显示时为00000001 +输出到文件时为00000001DISPLAY9(m)V9( n)无符号小数(小数点不显示, 不占位)每位 占用一个字节,显示或输岀到 文件时,为零 的数位显示”0(1=m + n =18)例如:01 IPIC 9(4)V9(2).变量1占用6个字节,整数位4位,小数 位2位。I = 1.1时,输出显示时为000110S9(m)V9( n)带符号小数(小数点不显示,不占位)每位 占用一个字节,符号位不占位,显示时,为零的数位显
7、示” ”符号 显示在最后,输岀到 文件时,为零 的数位显示” ”,符号丢 失。(1=m + n =18)例如:01 IPIC 9(4)V9(2).变量1占用6个字节,整数位4位,小数 位2位。I = 1.1时,显示时为000110+输出到文件时为000110Comp,comp-5,comp-39(m) comp-5无符号整数,数据以二进制方式存贮,显示和9(m)一样,不能出力(1= m =18)S9(m) comp-5有符号整数,数据以二进制方式存 贮,显 示和S9(m)类似,只是符号 在前面,不能 出力,(1= m = 18)9(m)v9(n) comp-5无符号小数,数据以二进制方式存 贮
8、,显示和9(m)v9(n)样,不能 岀力(1= m + n =18)S9(m)v9(n) comp-5有符号整数,数据以二进制方式存贮,显示和S9(m)v9(n)类似,只疋符号在前面,不能岀力,(1= m + n 大于小于=等于=NOT =不等于注:判断字符串能否转换为数字。NUMERICNOT NUMERICIS NOT NUMERIC11、PERFORM语句PERFORM XXX-RTN.?调用子节,直到遇到第一个只包含EXIT语句的段中止,回到该调用语句的下一条语句EXIT只与它搭配有效。所以节的定义规定如下:XXX-RTNSECTION.语句块.XXX-EXT.EXIT.PERFORM
9、 XXX-RTN N TIMES.?循环调用子节N次PERFORM XXX-RTN UNTIL N 30.?循环调用子节,直到N大于30。PERFORM UNTIL表达式语句WHENOTHER.END-EVALUATE?ANY:任何变量、常量值 ?TRUE、FALSE:关系表达式的结果?循环调用语句块,表达式判断在语句块前进行。PERFORMVARY INGX语句.END-PERFORM.FROM A BY B UNTIL X 12EVALUATEWHEN变量、常量、表达式ANYTRUEFALSE(NOT)常量1THRU (THROUGH)常量2END-PERFORM.?循环调用语句块12、E
10、VALUATE,相当于FOR循环 语句口朮儿基本語法(NOT)常量1 THRU (THROUGH)常量2:值(不)在常量1和常量2构成的闭区间 另外,在WHEN后面可 以包含简单的关系表达式。如:EVALUATE A WHEN = 10EVALUATE BWHEN = 1 OR = 2 OR = 3语句??WHEN OTHER语句??END-EVALUATEWHEN OTHER语句??END-EVALUATE.13、另外,不同的COBOL系统提供了不同内部函数,建议少用内部函数,以下提供几个通用的内部函数?ORD取得字符的ASICII码如:二、PRO*COBOLCOMPLA使用的PRO*COB
11、OL是ORACLE公司提供的在 基本語法COBOL程序中嵌入SQL语句的一种方法,使得程序方 便地访问操作ORACLE数据库;PRO*COBOL程序经过ORACLE提供的预编译器预编译生成中间COBOL程序后,程 序中所有的SQL语 句直接调用ORACLE库函数, 再经过COBOL编译器同一般COBOL程序一样编译生成各种可执行模 块,由于程序中直接调用ORACLE库 函数,所以它们访问操作ORACLE数据库的速度很快,基本语法如下、特点所有的SQL或数据库操作相关语句均被括在 ”EXEC SQL”和 “END-EXEC”之间,并且它们只能包含一条语 句,如:EXEC SQLSQL语句MOVE
12、 FUNCTION ORD (“A”)UPPER-CASE字母小写转换成大写 如:MOVE FUNCTIONUPPER-CASE (STRING(START:1) LOWER -CASE字母小写转 换 成大 写 如 :MOVE FUNCTION LOWER-CASE (STRING(START:1)REVERSE对字符串中所有字符进行倒序 如:MOVE FUNCTIONREVERSE(STRING-1) LENGTH取得变 量 的 定 义 长 度 , 如 :COMPUTE LEN = FUNCTIONLENGTH(STRING)TO NUMBER.TO STRING(START:1)TO ST
13、RING(START:1)TO STRINGEXEC SQL INCLUDE ORACAEND-EXEC.END-EXEC.? 所有访问操作数据库的变量都必须是主变量。?“EXEC SQL”,”END-EXEC 及其包含的语句都必须从12列或12列以后开始三、 数据部内容。?引用两个对象SQLCA, ORACA.EXEC SQL INCLUDE SQLCA END-EXEC.VARCHA型变量(可变长度)该变量定义就是在X型变量后加关键字VARYING如:05 STRINGPIC X(100)VARYING.它实际包含两部分(预编译后的中间COBO程序可见)05 STRING.06 STRIN
14、G-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 WSITIIOl.cpy END-EXEC.? 游标的定义可以放在数据中。四、数据部中SQL语句的基本语法1)、错误扑获ORACLE错误扑获是一个全局
15、性的标志,在一个事务(在PRO*COBO中,ORACLE务以COMMI或ROLLBACKS分割点)中,后一个错误扑获会覆盖前一个错误扑获设置。?遇至U SQL警告(SQLCODE 0)继续EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC.? 遇至U SQL错误(SQLCODE 0)继续EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.? 遇至U SQL错误(SQLCODE 0)跳转EXEC SQL WHENEVER SQLERROR GOTO ORA-ERROR END-EXEC.? 主变量定义。EXEC SQ
16、L BEGIN DECLARE SECTION END-EXEC.主变量定义开始)EXEC SQL END DECLARE SECTION END-EXEC.主变量定义结束)主变量都必须定义在这里,具体定义和一般的COBO变量一样2)、数据连接数据库连接在一般的项目开发中用不到,只用于测试程序中(不连接外部数据库)?方式一(USERNAM和PASSWOF分开,女口:USERNAME“=OPS$LAPROC51 PASSWORD=“LAPROC)EXEC SQLCONNECT :USERNAME IDENTIFIED BY :PASSWDEND-EXEC.?方式二(USERNAM和PASSWOR
17、D并,女口:UID =“OPS$LAPROC51/LAPR”CEXEC SQLCONNECT :UIDEND-EXEC.3)、 静态SQL语句? 单条记录的检索EXEC SQLSELECT ENAME, SAL, COMMINTO :EMP-NAME, :SALARY, :COMMISSION:COMM-INDFROM EMPWHERE EMPNO = :EMP-NUMBEREND-EXEC.注:上例中的COMM-IN为指示变量,在检索操作中每个接受主变量都可指定一个指示变量用来判断主变量是不是接受到一个空值(NULL)(主变量不能接受空值),当指示变量为 量应该接受到一个空值(主变量自己表示
18、不出来)? 多条记录的检索(CURSORS标)? 游标的定义EXEC SQLDECLARE CUR_NAME CURSOR FORSELECT MSG_CD,MSG_1,MSG_2FROM WWWTMSG1END-EXEC.游标的定义:将SQL查询语句声明为一个游标,不调用ORACL库函数,不会更新? 游标的打开EXEC SQLOPEN CUR_NAMEEND-EXEC.游标的打开:用游标定义的SQL语句检索数据库,将检索结果生成一个游标对象, 记录前一位置,无法确定游标中有没有记 录)。? 游标中记录的抽取EXEC SQLFETCH CUR_NAMEINTO:HST-MSG-CD, :HST
19、-MSG-1,:HST-MSG-2END-EXEC.游标中记录的抽取:将游标中的记录抽取到相应的主变量中,一次抽取一条。? 游标的关闭EXEC SQLCLOSE CUR_NAMEEND-EXEC.游标的关闭:将现有的游标对象释放,游标再次打开前,必须关闭。? 更新EXEC SQLUPDATE WWWTMSG1SET MSG_1 =:WK-MSG-1,MSG_2 = : WK-MSG-2WHERE MSG_CD = : WK-MSG-CD END-EXEC.?删除EXEC SQLDELETE FROM WWWTMSG1WHERE MSG_CD = : WK-MSG-CDEND-EXEC? 插入E
20、XEC SQLINSERTINTO 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.(9(04)COM型),它-1时,表示对应的主变SQLCOD的 值此时游标指针在第一条? 事务的回滚? 方式一(释放连接)EXEC SQL ROLLBACK WORK RELEASE END-EXEC.? 方式二(不释放
21、连接)EXEC SQL ROLLBACK WORK END-EXEC.?典型的SQLCOD值?SELECT1403 :没有检索到记录1403 :游标指针FETCH到游标的尾部FETCH(游标中记录的抽取)?UPDATE1403 :没有更新的记录-60 :死锁-2049:由于死锁导致系统超时?DELETE1403 :没有删除的记录-60 :死锁INSERT-1 :插入的记录已存在-60死锁-2049:由于死锁导致系统超时?典型ORACL内部变量SQLCODE : SQL语句运行后得到的返回值SQLERRMC: SQL语句运行后得到的返回信息SQLERRD(3): SQL语句运行处理的记录 条数4
22、) 、动态SQL语句? 动态一 ( 直接执行SQL字符串 )? 方式一MOVE INSERT INTO DYN1 VALUES (TEST) TO DYNSTMT. EXEC SQL EXECUTE IMMEDIATE :DYNSTMT END-EXEC.? 方式二EXEC SQL EXECUTE IMMEDIATEINSERT INTO DYN1 VALUES (TEST)END-EXEC.动态一:只用于没有任何参数和返回结果的SQL语句操作? 动态二(用于非检索SQL语句)? 方式一(带参数)MOVE INSERT INTO EMP (EMPNO, DEPTNO) VALUES (:V1, :V2) TO DYNSTMT-ARR.EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.EXEC SQL EXECUTE S USING :EMPNO, :DEPTNO1 END-EXEC.其中V1,V2为形参,S为PREPAR生成的临时对象? 方式二(不带参数)STRING INSERT INTO DELIMITED BY SIZEEMP (EMPNO, DELIMITED BY SIZE DEPTNO) DELIMITED BY SIZE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- XX国家生物产业基地生物医药企业加速器可行性研究报告
- 2025年华东师大版九年级地理下册阶段测试试卷含答案
- 2025年外研版三年级起点高一地理下册阶段测试试卷含答案
- 2025年人教A新版选修4地理下册阶段测试试卷
- 2025年华东师大版必修1历史上册月考试卷含答案
- 遵义医药高等专科学校《综合法语(2)》2023-2024学年第一学期期末试卷
- 2025年度城乡绿化苗木采购合同汇编4篇
- 2025版模板木材加工企业原材料采购合同范本4篇
- 二零二五年度出口代理责任与权益合同标准4篇
- 2025年度健康养生管理中心加盟管理合同4篇
- 广东省佛山市2025届高三高中教学质量检测 (一)化学试题(含答案)
- 人教版【初中数学】知识点总结-全面+九年级上册数学全册教案
- 2024-2025学年人教版七年级英语上册各单元重点句子
- 2025新人教版英语七年级下单词表
- 公司结算资金管理制度
- 2024年小学语文教师基本功测试卷(有答案)
- 未成年入职免责协议书
- 项目可行性研究报告评估咨询管理服务方案1
- 5岁幼儿数学练习题
- 2024年全国体育单招英语考卷和答案
- 食品安全管理制度可打印【7】
评论
0/150
提交评论