1、JCL 语言与实用程序一 JCL 语言介绍1 作业都必须包含三个 JCL 基本语句,它们分别是:(1) 作业语句(JOB):标识一个作业的开始,提供必要的运行参数。(2) 执行语句(EXEC):标识作业步的开始,定义本作业步所要执行的程序或过程。(3) 数据定义语句(DD):用于描述应用程序所需要的数据文件。二 JOB 语句1 CLASS:作业输入类别。2 MSGCLASS:输出作业类别。3 MSGLEVEL:控制输出清单内容,MSGLEVEL=(statements,message)Statement:指明在 JCL 打印作业控制语句类型,0-2。0:仅打印作业的 JOB 语句1:打印出作业
2、的包括过程语句在内的所有 JCL 语句2:输入流中的所有控制语句Messages:指明 JCL 作业输出清单中应打印出信息的类型,0-1。0:只在昨夜异常终止时,打印出 JCL、JES、操作员及 SMS 的处理信息1:无论是否异常终止,都打印出 JCL、JES、操作员及 SMS 的处理信息4 NOTIFY: 系统在后台处理完毕时给指定用户发送信息。三 EXEC 语句 1) PGM:用于指明所要执行的程序名,程序以二进制的形式(目标代码)放进一个分区数据集(PDS)中。2) PROC:指明作业步多要运行的过程名。需要注意 EXEC 执行语句中调用的过程必须放在过程库中;”PROC=”可以省略不写
3、过程语句中的 COND 条件参数:当条件满足时,不执行当前作业步。主要用于一个作业或过程中含有多个步时用于确定当前作业步的执行与否。四 DD 语句1 DSN:指明使用数据集的名字。2 DISP: 描述数据集被执行前的状况及执行后如何处理。它是由三个位置参数组成,格式写为 DISP=(NEW,DELETE,DELETE),这三个位置参数的作用如下。第一个位置参数表示数据状态,即执行前数据集的状况:NEW:指明数据集要在这个步骤生成。OLD:数据集在本步骤前存在,用排他式使用它。SHR:已存在,共享方式使用它。MOD:1)已存在,加到原文件末尾,要求数据集必须是顺序文件。2)如果不存在,在本步骤中
4、创建它。第二个位置参数表示作业步正常结束时的处理:DELETE:作业结束后删除此文件。KEEP:指明作业步结束后数据集仍保留PASS:保留给后面的作业步使用CATLG:指明在结束后自动对数据集编目UNCATLG:作业结束后自动清除数据集编目 第三个位置参数作业步非正常结束时的处理:DELETE:作业结束删除KEEP:非正常结束仍保留CATLG: 结束编目UNCATLG:结束清除编目*如果没有给出 DISP,默认 DISP=(NEW,DELETE,DELETE)SYSOUT:指明是系统输出数据集。3 需要理解 SPACE 空间、DCB 数据控制块、VOL 卷、UNIT 设备类型四个参数的基本用法
5、4 特殊的 DD 语句:A ) JOBLIB DD:个私有库,指定一个私有库,现找私有库。指定的私有库必须是一个 PDS 数据集,里面存放可执行语句。B) STEPLIB DD: 定义 STEPLIB,JOBLIB 被忽略。C) JCLLIB:指明调用的过程库及查找顺序D) SYSIN: 定义一个流内数据集,从输入设备中得到。四 PROC 语句:过程分流内过程 PROC(IN-STREAM PROC)和 CATALOG 的过程(CATALOGED PROC)两种。1 in-stream proc:过程直接写在作业流中以 PROC 开始,以 PEND 语句结束2 cataloged proc:过
6、程以 member 方式放在 procedure library(过程库是分区数据集) 中以 PROC 开始,无需 PEND 语句结束五 会用如下常用的 UTILITY 实现相应的基本功能DEFSORTIEBCOPYIEFBR14IEBGENERIDCAMS(会建立 ESDS 顺序文件、KSDS 索引文件)COBOL 高级编程一、概述:1 需要理解 COBOL 程序由于如下的四个部组成,及这四个部的作用是什么及各部中常见的写法。标识部:(IDENTIFICATION DIVISION)环境部:(ENVIROMENT DIVISION)数据部:(DATA DIVISION)过程部:(PROCED
7、URE DIVISION)2 理解 COBOL 程序的书写规则,即五个区域的划分。3 理解 COBOL 中常量的种类分为数据型常量、字符型常量、表意常量(需要知道常用的表意常量)三种4 了解 COBOL 所处理的数据的特点 层次的概念:数据间存在的从属关系。 文件的概念:多个记录可以组成一个文件。记录的概念:具有一定层次关系的一组数据项的最大集合,它是内存中具有独立逻辑含义的最大存取项,具有最高层次。 二 环境部:会声明常用的文件类型,包括对于两种 VSAM 文件和 PS 顺序文件的声明。要注意针对不同类型的文件的访问模式、组织形式、及其相关参数的配合使用。三 数据部:程序中用到的所有变量都必
8、须在数据部中定义。1 需要理解如下层次定义1) 用来描述数据的层次结构的层号从 01 到 49。描述数据的最高层为 01 层,最低层为 49层。2) 从属于同一组合项但不互相从属的数据项具有相同的层号。3) 66 层为数据描述项保留,即修改数据项的名称。4) 77 层定义的孤立的和其它数据项没有关系的变量,一般用于定义常量,即通过 VALUE语句的形式为变量指定一个常量。5 ) 88 层为数据项目条件名保留。2 理解数据部中可以包含的节,所包含节的作用3 需要知道程序中用到的所有临时变量都需要在 WORKING-STORAGE SECTION 工作存储节(也称为工作单元节)中定义。4 需要知道
9、如何利用 FILE SECTION 文件节来描述在环境部中所声明的文件。5 需要知道 LINKAGE SECTION 链接节如何使用6 需要掌握 PIC 子句中描述常用数据项的方法及它们的特点1)重点掌握数值型数据项及字符型的描述方法及特点2)理解数据型数据项和编辑型数据项的区别3)理解常用数值型数据项的显示形式及它们在内存占据的长度A 不压缩型 B COMP-3 型 C BINARY(COMP)型7 学会正确使用 REDEFINES 的用法四 过程部中需要掌握如下语句的基本用法1 MOVE 语句的作用,需要传送同名数据项时,需要使用 CORR 参数2 ACCEPT: 接收数据,常用的形式AC
10、CEPT 变量名 FROMDATE/DAY/TIME3 DISPLAY :将数据写入到输出设备4 INITIALIZE: 将数据项的值设为初始值5 OPEN:打开文件的四种形式及特点,要注意打开文件的格式,要和之后的读写文件匹配,了解常用的文件状态码6 READ:会读环境中声明的不同文件,最简单格式为 READ 文件名7 WRITE: 会写环境中声明的不同文件,最简单格式为 WRITE 记录名8 CLOSE9 算术运算语句加、减、乘、除及 COMPUTE 语句的使用10 IF(包含符号条件、类型条件、条件名条件的用法) 、EVALUATE(或称为 WHEN 语句)的用法及区别12 会使用 OC
11、CURS 语句定义及使用表13 会使用 PERFORM 语句的一般形式及常用的循环形式14 会使用 CALL 语句调用子程序DB2 应用程序开发一 DB2 数据库在结构和原理上是属于关系数据库的,是以表为单位组织数据。表是存在于表空间中的,表空间是存在于数据库中的。二访问数据库表资源使用的结构化查询语句 SQL 语句。常用的 SQL 语句有三种:DML:数据操作语言,常用的 DML 语言有 SELECT,INSERT,UPDATE,DELETE 四种DDL:数据定义语言,常用的 DDL 语言有 CREATE,ALTER,DROP 三种DCL:数据控制语言,常用的 DCL 语言有 GUARANT
12、,REVOKE,COMMIT,ROLLBACK 四种。三DML 操作语言中需要熟练掌握 SELECT 语言的基本用法,理解 SELECT 语句的扩展用法。会使用常用的 INSERT,UPDATE,DELETE 语句1 SELECT 语句:主要用于数据的查询。使用 SELECT 语句进行查询的时候,通常根据 WHERE从句指定选择条件;注意:WHERE 子句中的关系运算符的运用:=,=,LIKE,OR,AND,NOT,BETWEEN,IN2 了解常用的功能函数的用法。 SUM: 得到所选数据的总和; AVG: 得到所选数据的平均值; MIN : 得到所选数据中的最小值; MAX:得到所选数据中的
13、最大值; COUNT:得到所选数据的个数; DISTINCT:过滤列的重复值。3 选择所有的列用法:SELECT * FROM TABLE-NAME;4 选择特定的列:SELECT COLUMN-NAME1,COLUMN-NAME2 FROM TABLE- NAME;5 选择数据表以外的数据:SELECT STRING,COL-NAM1,:VAR1,COL-NAM2 FROM TABLE-NAME;6 为选择出的列命名:SELECT SUM1+SUM2 AS TOT FROM TABLE-NAME;7 过滤列的重复值:SELECT DISTINCT(列名) FROM TABLE-NAME WH
14、ERE 子句;8 如下属于 SELECT 语句属于扩展的用法,需要通过实例(教材中第 48 页到第 58 页)理解语句的用法A) GROUP BY 语句实现分组功能:在 SELECT 语句中利用 GROUP BY 进行数据分组时需要使用列函数(聚合函数)对于其它列进行聚合。例如:SELECT WORKDEPT,MIN(EDLEVEL),MAX(EDLEVEL) FROM EMP GROU BY WORKDEPT;B) 通过 HAVING 语句实现对分组(GROUP BY)的选择,只显示符合条件的记录;C) ORDER BY 语句实现对结果数据进行排序,如果不指定是升序还是降序,则以数据存入的顺
15、序显示;(ascending/descending);D) UNION 子句可以把两个查询结果连在一起显示E) JOIN:从一个以上的表进行查询。F) INNER JOIN(内连接):指定一定的条件,把符合条件的数据从两个表里提取出来。G) FULL OUTER JOIN(外连接):把两个表所有符合条件的记录都列出来。H) LEFT OUTER JOIN(左连接):把左面那个表的所有记录都列出来,如果在 ON 条件上,另一个表没有与之相等的记录,则显示 NULL 值。H) RIGHT OUTER JOIN(右连接):把左面那个表的所有记录都列出来,如果在 ON 条件上,另一个表没有与之相等的记
16、录,则显示 NULL 值。四 DB2 应用开发:在 COBOL 编写代码的过程中通过插入 SQL 语句来达到对数据库中的表资源进行操作。1 使用 EXEC SQL 和 END-EXEC 对 SQL 语句进行指定2 使用 SQLCA 实现 COBOL 应用程序和 DB2 数据库之间的交互。当 COBOL 程序中需要访问或操作数据库表时,需要在工作存储节中将 SQLCA 包含进来。3 SQLCA 中的 SQLCODE 和 SQLSTATE 是由 DB2 反馈给应用程序的 SQL 语句的执行情况。比较常用的是 SQLCODE。SQL 语句执行后情况 SQLCODE 的取值警告 大于 0 且不等于 1
17、00错误 小于 0数据没找到 100成功 04 DB2 中游标的使用:1) 游标的概念:当我们从表中读取记录的条数大于一条时,需要使用 CURSOR(也叫游标)来一次一条地处理这些记录。也就是说,CURSOR 用来处理存在于表中符合条件的多条记录。2 )游标的使用过程:A 定义游标:为游标指定一个名字和 SELECT 语句B 打开游标:打开游标,生成结果集C 使用游标读取数据:使用 FETCH 命令把结果集里的数据读取到宿主变量中来。C 关闭游标:关闭游标,释放资源。注意:在声明游标时, SELECT 语句不能包含 INTO 子句。当使用游标时,INTO 子句是 FETCH 语句的一部分。3)
18、 定义游标的基本格式如下: EXEC SQL DECLARE CURSOR-NAME CURSOR FOR SELECT COURSOR-NAME-LISTFROM TABLE-NAME WHERE SEARCH-CONDITIONFOR UPDATE OF COLUMN-NAME END-EXEC .注意:如果在读取的同时更新某些记录,必须要使用 FOR UPDATE OF 语句把需要更新的列名列出来,这样在打开游标时,DB2 会在符合条件的记录上加更新锁,防止其他程序同时对这些记录进行更新造成数据错乱。4)打开游标,就是根据声明 CURSOR 语句中的 SELECT 语句生成结果集。打开游
19、标的基本格式如下:EXEC SQL OPEN CURSOR-NAMEEND-EXEC.5)使用游标:通过使用 FETCH 命令把结果集里的数据读取到宿主变量里来。基本格式如下:EXEC SQLFETCH CURSOR-NAMEINTO :HOST-VARIABLE1, :HOST-VARIABLEEND-EXEC.注意:FETCH 的游标名必须已经打开,INTO 指定的宿主变量个数与类型应与 DECLARE CURSOR 时指定的一致,可以使用宿主结构变量。6)关闭游标:处理结束之后,要关闭游标释放资源。基本语法如下:EXEC SQLCLOSE CURSOR-NAMEEND-EXEC.注意:处
20、理程序结束之后,一定要关闭游标;如果有没有关闭的游标,系统会自动关闭它。五 概念的理解:1 SQL: Structured query language (结构化查询语句 SQL) 是关系数据库中定义和维护数据的标准语言,通常使用方式有三各:Static SQL 静态 SQL,Dynamic SQL 动态 SQL, Interactive SQL,交互式 SQL2 Storage groups(存储组):在 DB2 中,是保存 DB2 目标的一系列磁盘卷,存放数据的实际空间;数据存储的结构实际上是一系列的 VSAM 数据集,它以 Stogroup 的形式关联DB2; Stogroup 指明数据
21、库存放数据所需要的空间,提供 DB2 使用的卷。3 Databases(数据库):在 DB2 中,Database 是 DB2 结构的设置,是一系列的表空间和索引空间,一个 Database 可以关联一个应用的或一组相关联应用的所有数据,一个Database 可以定义一个或多个 Tablespace 和 Indexspace 。4 Tablespaces(表空间): Tablespace 实际上就是 VSAM 数据集,是存放数据的物理空间,一个表空间可以含有一个或多个数据集,这类数据集也称为 Page set;一个表空间可以用来存放一个或多个表的数据,即在一个 Tablespace 可以定义一
22、个或多个 Tables。Tablespace 的类型有三种,Simple tablespace 简单表空间,SEGMENT TABLESAPCE 分段表空间,PARTITION TABLESPACE 分区表空间5 Tables(表):Tables 表是用来访问 DB2 的数据结构,它是 rows 行的集合,这些 rows具有相同的结构,每一个 row 行包含多个 columns 列,row 行与 column 列之间存在着某种关系, 每一个 row 行对应的是一个特定的 ENTITY 实体(记录) 。Column 列是表中实体的特性,其数据类型具有两个基本特性:- 数据类型- NULL(空)属
23、性6 DB2 的数据类型DATA TYPE COMMENTSMALLINT(短整型) -32768+32767INTEGER -2,147,483,648+2,147,483,647DECIMAL(M,N) 最大 31 位,m 代表总位数,n 代表有几位小数CHAR(N) OR CHARACTER(N) String(fixed length)(max. 254 characters)VARCHAR(N) String(variable length)(max. 32764 characters)DATEYYYYMMDDSupported formatsmm/dd/yyyyEUR dd.mm.
24、yyyyISO yyyy-mm-ddJIS yyyy-mm-ddTIMEHHMMSSSupported formatshh:mm AM or PMEUR hh.mm.ssISO hh.mm.ssJIS hh.mm.ss7 DB2 的数据类型与 COBOL 数据类型的对应关系DB2 COBOLSMALLINT PIC S9(4) COMPINTEGER PIC S9(9) COMPDECIMAL(N,M) PIC S9(N-M)V9(M) COMP-3CHAR(N) PIC X(N)VARCHAR(N) PIC S9(4) COMPPIC X(N)GRAPHIC(N) PIC G(N) DISP
25、-1VARGRAPHIC(N) PIC S9(4) COMPPIC G(N) DISP-1DATE PIC X(10)TIME PIC X(8)TIMESTAMP PIC X(26)8 DB2 的 NULL 空属性1) 空属性用于记录一些缺少的或是未知信息的记录2)它用于一个单字节的表示空的字符表示(通常是表示减号的字符)3)所有的列只能被定义成如下几种情况:Null 空/Not Null 非空/Not Null with Default带缺省值的非空8 Keys:KEYS 是由表中的一个 column 或多个 column 组成能标识本表记录的关键字,一个表可以定义一个或多个 KEY 。 需
26、要理解主键、唯一键、父键、外键的概念。KEYS 可以定义为1) Unique keys 如果能唯一标识本表的行(row),则称为唯一键(unique key);否则,称为非唯一键(nonunique key)。2) Primary keys 一个表的一个或多个列 (column),如果它(们)的值,可以唯一标识本表的行(row) ,那么,就可以将此一个或多个列(column) 定义为主键(primary key);主键必须是唯一键,一个表中,只能定义一个主键。3) Parent keys 可以是一个表 primary key 或 unique key。如果在此键上,至少定义了一个外键(fore
27、ign key),那么,此键相对外键,就叫做父键。4) Foreign keys 一个表的一个或多个列(column),可以定义为引用某个 parent key 的外键,只有 parent key 的值存在时,才能加入到外键。10 Indexs: Index 是用来提供一种存取 TABLE 中数据的指针,每一个 Index 都是基于Table 的一列或多列数据,并且占有自己的索引空间 Index space(VSAM linear data set) ,索引与 TABLE 是分别定义的;一个表可以有多个索引,Cluster 参数决定其索引值是顺序的,但在一个表中只能定义一个 Cluster Index。索引有唯一索引和非唯一索引两类。1)UNIQUE INDEXES:DB2 不希望列值的重复,对其定义 Unique Index,要是一个表有Primary Key 以将它作为 Unique Index。2)NON-UNIQUE INDEXES:非唯一索引是相对于唯一索引的,即非唯一索引允许列值的重复11 Views 视图 : Views 是 Table 的视图,可以看作是一个虚拟 Table,它没有物理存储数据的结构,只是提供访问物理 Table 数据的路径。View 的产生可来自一个表或多个表的列的集合。通常使用 VIEW 的作用主要是用于数据分析。