- 1、本文档共184页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.9.2预编译、编译、链接、执行COBOL源程序的JCL-四川大学
主机DB2数据库应用与编程 第八章 嵌入式COBOL程序开发 8.1 COBOL嵌入式应用程序开发基本概念 8.1.1 COBOL嵌入式应用程序开发总体结构图 COBOL嵌入式应用程序开发总体结构图如下: Precompile Compile/Link-edit Bind 在上图中,COBOL嵌入式源程序由COBOL源程序中嵌入DB2 SQL语句组成。用JCL来处理COBOL嵌入式源程序。 第一步预编译后DB2 SQL语句从COBOL源程序中分离,分别生成剔除SQL语句的修改的源程序和包含SQL语句的DBRM文件。 修改的源程序可以看作普通的COBOL源程序,经过通常的编译后生成目标文件,联结后生成可执行文件。 DBRM文件经过两次绑定先后生成包和计划。 运行COBOL嵌入式源程序可以有两种基本方式: 在JCL里运行 在CICS里运行 这些将在下文实例部分详细介绍。 8.1.2 分隔符 嵌入式SQL应用程序的特点如下: 使用分隔符来标识应用程序中的SQL语句。 使用宿主变量来在WHERE子句中提供值,或从SELECT语句中得到值。 使用SQLCA来确认SQL语句是否成功。 预编译器使用分隔符来识别要编译的SQL语句。嵌入式程序开发中应当标识每一句嵌入式SQL语句的开始和结束。 例如:以本文的样例表EMP为例,使用EXEC SQL和END-EXEC来分隔在COBOL程序中的SQL语句如下: EXEC SQL UPDATE EMP SET WORKDEPT = C00 WHERE WORKDEPT = C01 END-EXEC. 8.1.3 宿主变量 宿主变量用来在语句执行前设置值。SQL语句中的宿主语言标记是在变量前加冒号,且宿主变量应当与数据表列的数据类型匹配。 宿主变量的示例如下图: 更完整的嵌入式COBOL程序样例代码 比如单行插入的SQL语句样例如下: INSERT INTO EMP( EMPNO, LASTNAME ) VALUES ( 000100, JONES ) 在COBOL程序中的相关语句及SQL语句如下: MOVE JONES TO NAME. MOVE 000100 TO EMPNO. EXEC SQL INSERT INTO EMP( EMPNO, LASTNAME ) VALUES ( :EMPNO, :NAME ) END-EXEC. 嵌入式程序开发数据传递机制 一般情况是用户在CICS MAP或WEB界面里输入用户的查询或其他操作的条件,如000100和JONES,然后程序通过一个机制得到这些值(在CICS课程里会详细讲述),程序再做MOVE语句将得到的值传给对应的宿主变量,然后通过EXEC SQL END-EXEC语句,从宿主变量里取值拼接成一个完成的SQL语句,完成数据库操作。如果数据库不需要返回要显示的数据(如INSERT,UPDATE,DELETE语句) ,那么操作结束,如果数据库需要返回数据显示(如SELECT语句),那么返回的数据还会存入宿主变量,通过MOVE语句将宿主变量的值传给要输出显示的变量,然后程序通过一个机制(在CICS课程里会详细讲述)送出这些值到CICS MAP或WEB显示给用户。 宿主变量声明 在程序发出SQL语句查询、插入、更新和删除数据之前,应当首先声明程序中所用的表和视图。只要在程序中加入SQL DECLARE语句即可,每个数据表列对应一个宿主变量,同时需要使用额外的变量来指示列为空的情况。 COBOL程序中宿主变量声明的例子如下: 建表的语句如下: CREATE TABLE EMP ( EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1) NOT NULL, LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3), PHONENO CHAR(4), HIREDATE DATE, JOB CHAR(8), EDLEVEL SMALLINT, SEX
文档评论(0)