JCL.Cobol.DB2.CICS面试题

更新时间:2024-05-23 15:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

JCL:

1 简单描述一下DISP的使用,它有哪些参数?

DISP 参数用来告诉系统要使用的数据集的状态是什么并且告诉系统当本作业步执行完毕后如何处理这个数据集。你可以为作业步正常结束和非正常结束时分别指定不同的处理方法。 DISP= ( [NEW] [,DELETE ] [,DELETE ] )为空时也表示这个。

[OLD] [,KEEP ] [,KEEP ] [SHR] [,PASS ] [,CATLG ] [MOD] [,CATLG ] [,UNCATLG] [, ] [,UNCATLG]

2 什么是PROCEDURE,有哪几种PROCEDURE,简述区别 有2中PROCEDURE, 一种是CATALOG的PROCEDURE,是把过程的JCL语句写在一个编目的数据集里,该数据集必须是PDS 或PDSE里的一个成员,能够同时被多个JCL 调用。另一种是INSTREAM的PROCEDURE,流内PROCEDURE,写在一个JCL里面,以PROC开头,以PEND字句结束。

3.什么是GDG数据集,GDG数据集的每一代数据集是否可以是不同类型的? 定义GDG数据集有3个重要的参数: LIMIT NOEMPTY SCRATCH 各表示什么含义? 定义GDG BASE之后要必须定义什么?

答:GDG数据集是一组名字相似,时间和功能相关的数据集。 GDG数据集是MVS中的世代数据集,通过IDCAMS来创建。

GDG数据集的每一代可以是不同类型的。

3个重要的参数 LIMIT表示这个世代数据集最多可以有多少代; NOEMPTY表示不清空, SCRATCH表示最老的一代是被删除掉的。定义GDG BASE之后必须定义GDG DSCB才能生效。

4. COND参数是什么意思? 如果我需要作业步3,只在作业步2返回码是0或者4的时候才执行,如何写COND参数? 答: COND参数是CONDITION参数,表示什么情况下作业步被执行/不被执行。 COND=(4,LT,STEP2)

5.IEBCOPY与IEBGENER有什么区别?IEFBR14是起什么作用的?

IEBCOPY:对分区数据集进行拷贝、压缩或合并

IEBGENER:拷贝顺序数据集,或将顺序数据集转为分区数据集 IEFBR14实际是一个空程序,什么也不做,只是返回返回码0,但是使用它可以进行JCL 语言的各种处理,如DD 语句中创建数据集等。

6用哪一个UTILITY去定义VSAM文件,简介一个定义VSAM文件的一些参数

DEFVSAM EXEC PGM=IDCAMS

DEFINE CLUSTER(NAME(OCB4D4.EX0801.VKD44N) VOL(TSTCC2) - RECSZ(48 48) REC(1000 1000)

KEYS(10 0))

7.定义VSAM的时候是否可以指定VSAM分配的大小,通过哪个参数指定?

答:通过用IDCAMS来定义VSAM文件,通过指定CYL参数来指定VSAM分配的大小,在定义VSAM的DATA部件的时候指定的VSAM文件的大小

8.定义VSAM的时候,参数 KEYS(9 12) 表示什么意思? (6 0) 答: KEYS(9,12)表示从记录的12列开始,数9个长度作为VSAM文件的KEY. 比如 KEYS(6 0),就是指从文件开始的6个长度的字段作为KEY

9.SPACE参数如何使用? 比如你要建一个PDS数据集,SPACE=(TRK,(1,1,1)),3个1各表示什么?

第一个 首次分配;第二个 扩展分配;第三个 目录区大小 10.要建立一个PDSE数据集,记录格式是定长不分块,记录长度是120,块大小系统选定,DCB参数如何写,为了指明建立的是PDSE还要写哪个参数?

答: DCB = ( RECFM = F, LRECL = 120, BLKSIZE = 0) ,还要指定 DSNTYPE = LIBRARY 参数才能表示是分配的是PDS-E数据集。

11.如何让系统指定BLKSIZE, 系统指定有什么好处? 答:系统指定BLKSIZE的话,需要在有RECFM参数,LRECL参数的情况下,指定BLKSIZE = 0, 或者不指定 BLKSIZE参数,就是

系统指定BLKSIZE参数。

系统指定BLKSIZE的话,可以最优化块大小的分配,节省系统空间。

12.PDSE和PDS有什么区别?

PDS删除的成员空间不会自动释放,压缩 才能使用该存储空间。而PDSE的删除后自动释放,不可压缩。 PDS可能有目录缺陷而PDSE没有

13.在一个JCL作业中有多个作业步,如何从其中的一个作业步开始执行作业,用哪个参数指定?

答: 可以通过在JOB语句里面指定RESTART = STEP5 参数是JCL直接从作业步 5 开始执行。

14. SPACE参数中的RLSE参数是起到什么作用?

答: RLSE参数表示RELEASE,表示系统自动释放掉分配给数据集的但是没有被使用的空间。

15.JCL中定义的记录格式有哪些? 分别表示什么含义? FB定长分块 F定长不分块 VB变长分块 V变长不分块 和 U未定义,存放的是二进制代码。

16. STEPLIB DD 语句, JOBLIB DD 语句,JCLLIB DD 语句 分别起什么作用?

答: JCLLIB用在PROCEDURE中,指定JCL中用到的PROCEDURE放在哪里;

JOBLIB和STEPLIB都是用来自定JCL中用到的

PROGRAM放在哪里,

如果单独有JOBLIB或 STEPLIB的话就是去JOBLIB或STEPLIB后面指定的数据集去找PROGRAM。

如果JOBLIB和STEPLIB都有的话,那么JOBLIB会被忽略,去STEPLIB里面去找

如果JOBLIB和STEPLIB都不指定的话,就是去SYS1.LINKLIB里面去找。

17. SORT UTILITY是用来做什么的, 如果我想对记录中的第二个字段进行字符升序排序,这个字段的起始位置是4长度是19,如何写 SORT的控制语句?

答: 主要是对文件中的记录进行排序,最常见的参数是SORT FIELDS,按照题目要求这样的SORT语句应该这样写: SORT FIELDS = (4,19,CH,A)

DFSORT 是IBM 的Data Facility 家族的一员,用来对数据集进行排序、拷贝和合并。 控制选项:

SORT:指定对数据集进行排序操作;MERGE:指定对数据集进行合并操作;COPY:指定对数据集进行拷贝操作; FIELDS:指定排序键值的信息,格式为

FIELDS=(起始位置,长度,升降序[,起始位置,长度,升降序]),FORMAT=数据类型

(起始位置,长度,数据格式,升降序[,起始位置,长度,数据格式,

FD OUT-FILE. 01 OUT-RECORD PIC X(80).

4.COMP和COMP-3,DISPLAY各表示什么意思?

S9(4) COMP-3占多少字节? S9(7)V9(2) DISPLAY 占多少字节?

COMP是二进制,COMP-3是压缩十进制,DISPLAY是十进制。 S9(4) COMP-3占3个字节 S9(7)V9(2) DISPLAY 占9个字节

5.如果VSAM中的字段格式是 S9(7)V9(2) comp-3, 如何定义一个数据来接收这个数据并DISPLAY出来? 答:通过定义 9(7).9(2) 来接收这个变量。

6.S9(4) COMP-3在内存中占多少字节? -1234在内存中是如何存储的?

答: S9(4) COMP-3在内存中占3个字节, -1234在内存中表示为 01 23 4D (16进制表示) ( 00000001 00100011 01001101) (2进制表示)

7. S9(7) COMP在内存中占多少字节? MOVE 1234 TO VAR, DIS PLAY 之后VAR1 显示结果是 (VAR1的PIC字句是 S9(7) COMP-3)

答:S9(7) COMP 在内存中占4个字节, MOVE 1234 TO VAR1之后, DISPLAY VAR1显示为 0001234.

8.COBOL程序读取文件记录,如何判断已经读到最后一条记录

100-READ.

READ FILE1 INTO FILE-REC AT END….. NOT AT END…… …..

GO TO 100-READ.

9.COBOL中如何调用子程序?如何向子程序传值?

使用CALL,XTCL,LINK来调用子程序,其中call使用在batch程序中,XCTL,LINK使用在CICS中。使用call和LINK调用子程序后,子程序结束后仍回到主程序。而XTCL后,子程序结束后不返回。

使用通讯区在子程序间传值。

10.举例说明如何使用 REDEFINES, 要注意什么? REDEFINES是用来重定义,数据长度和类型都可以不同 05 AAA PIC X(6) 05 BBB REDEFINES AAA. 10 B-1 PIC X(4). 10 B-2 PIC X(2)

11.文件打开的方式有哪几种?各表示什么? INPUT 输入 从该文件中读取数据 OUTPUT 输出 把数据输出到文件中 I/O 即可输入又可输出

EXTENT 扩展

12.你是如何调试批次程序的?

在SDSF里面看作业的返回码,进入JES的作业信息查看是哪一个作业步发生了错误,返回码是多少,然后去响应的作业步里面查看出错信息

如果可能是变量错误的话,用DISPLAY 跟踪 13.S0C7是什么错误,如何解决?

S0C7-may be due to: 1. Numeric operation on non-numeric data; 2. Un-initialize working-storage; 3. Coding past the maximum allowed sub script.

数据类型不匹配。通过OFFSET后面的十六进制的数。 14.在线程序与批次程序有何区别?根本区别: 在线程序需要用到cics,而批次程序不需要

15.COBOL读取文件记录的语句,分别描述一下顺序和索引文件的读取

READ INTO AT END NOT AT END

READ INTO KEY IS INVALID KEY NOT INVALID KEY 16.如何定义一个数组?比如学生记录里面课程有8门 01 STUDENT.

05 NAME PIC X(10).

05 COURSE PIC X(4) OCCURS 8 TIMES. OCCURS不能定义在01层。

17. VSAM文件的组织形式有哪些?

ESDS:Entry Sequential Data Set; 顺序数据集;

特点是:A,记录只能增加在文件尾部;B,记录可被修改但长度不能被改变,记录不能被删除;C能根据相对寻址的方式进行操作。

RRDS:Relative Record Data Set; 相对记录数据集;

特点是:A,在数据集中包含许多小的数据块,这些可能有数据或为空;B,记录可能是固定的或可变的;C,肯顺序或直接的存取,根据相对的记录数方式操作。

KSDS:Key Sequential Data Set; 索引数据集;

特别是:A,记录能进行顺序或直接的读写;B,记录能被新增、修改、删除无限制,记录由索引方式来组织;C,按键值的方式进行操作。

LDS 线性存储,数据没有分界线。 18..文件的访问方式有哪些? SEQUENTIAL 顺序 RANDOM 随机

DYNAMIC 动态(有条件)

19.REDEFINES的起什么作用,请简述REDEFINES使用时要注意的地方

答: REDEFINES表示重定义,为同一个内存重新定义一个变量的名字。

例如: 01 A PIC S9(7)V9(2) COMP-3. 我们用B 来REDEFINES A 就用如下语句:

01 B REDEFINES A PIC X(5). 例如: 01 A.

03 A1 PIC X(6). 03 B1 REDEFINES A1. 05 B11 PIC X(4). 05 B12 PIC 99.

03 C1 REDEFINES A1 PIC 9(6).

1.数据名2与数据名1的层号必须相同。REDEFINES子句不能用于88层和66层。

2.用REDEFINES子句的描述体应紧跟在被重新定义的数据项的描述之后,中间不能插入其他项的描述说明。 3.可以多次重定义,但必须紧跟出现,而且要求使用最初定义的数据名。

4.REDEFINES子句不能用于文件节的01层中,因为文件节中01层描述的是记录,但工作单元节中的01层是可以用REDEFINES子句重新定义的,因为这里的01层不是指输入输出文件的记录,而是指组合项。

5.用REDEFINES子句可以改变数据的结构,但两个数据名的长度应相同。

6.内存中的值为数据名1和数据名2共享。也就是说,重定

义后两个数据名的名称和两种数据结构同时存在,都有效。程序中可使用其中任何一个。他们在内存中为同一段存储单元。如果改变了内存内容,则二者的值都因而改变。 7.重定义子句所在的数据描述体中不能使用初值子句赋初值

20.如何定义和使用文件 ? 如何把COBOL程序中的文件关联到实际的文件上?

答:在COBOL程序的Environment division段里的INPUT-OUTPUT SECTION FILE-CONTROL进行文件的定义,包括内部文件名,外部文件名,文件的格式以及访问方式 在 Data Division里的 FILE SECTION里面进行 FD 进行文件记录变量的描述

在 运行程序的JCL里面通过指定PGM = 程序名, 和相同的外部文件名来关联程序和实际的物理数据集。 21. COBOL中如何做循环,请描述下常用的循环语句 答:COBOL中主要通过 PERFORM做循环; PERFORM有3种主要的格式: PERFORM 100-PROC X TIMES ; PERFORM 100-PROC UNTIL X > 10;

PERFORM 100-PROC VARYING X FROM 1 BY 1 UNTIL X > 10; GO TO 语句。

22.如何从VSAM中的一条记录开始顺序读取以下的记录 答: 通过指定KEY值来指定从文件的哪个KEY开始读记录, 用COBOL语句: START FILE1 KEY IS EQUAL TO 变量 END-START

READ FIEL1 NEXT RECORD INTO 文件记录变量 END-READ

从文件头中间开始CICS STARTBR, READNEXT or READPREV, then ENDBR. 读取首条记录,给STARTB->READNEXT; 从文件尾读取,给STARTB->READPREV.

23. INSPECT 语句,简单说一下INSPECT … TALLYING & INSPECT … REPLACING

答: INSPECT 变量 TALLYING N FOR ALL ‘ ‘ 表示统计变量中的空格数,把统计结果给N.

INSPECT 变量 REPLACING ALL SPACE BY ‘.’ 表示把变量中的所有空格,用 . 替换掉。

24. INITIALIZE 语句作用是什么,INITIALIZE VAR,如果VAR是字符型,那么DISPLAY VAR后是什么结果,如果VAR是数值型,那么DISPLAY VAR后是什么结果?

答: INITIALIZE 语句是用来初始化变量内存的语句, 如果变

key

值赋

HIGH-VALUE,

key

值赋

LOW-VELUE,

量是字符型/字母型就初始化为 空格, 如果是数值型就都初始化为 0

25. CORRESPONDING 是什么作用在COBOL中,如何使用? 答:相应变量传送,通过用 MOVE CORRESPONGDNG 组合项A TO 组合项 B , ( 组合项 A 和 组合项 B 里有同名的子项的定义)

26. 描述一下读文件的全过程。

INPUT-OUTPUT SECTION的FILE-CONTROL中,用SELECT语句将外部文件和内部文件联系起来;在FILE SECTION中,通过FD定义文件的记录格式等;在PROCEDURE DIVISION中,首先OPEN INPUT/OUTPUT/I-O/EXTEND,READ或START-〉READ NEXT;读完之后CLOSE。判断文件读取状态使用FILE STATUS。

10 读取顺序数据集时读不到或者已经读到文件尾; 22 写Indexed文件的时候,存在关键字重复的记录; 35 数据集不存在;

37 用数据集不支持的方式打开文件(An OPEN statement with the INPUT, I-O, or EXTEND phrase was attempted on a non-optional file that was not present.);

39 程序定义与文件属性不匹配。记录格式不匹配; 92 逻辑错误,没先读就写; S0C4 读文件时文件没有打开。

27.如何定义一个VSAM文件在CICS中. CEDA DEF FILE(file-name) G(group)

指定 DSN 和文件的操作( ADD, READ, WRITE, UPDATE and DELETE).

28项目过程,也就是从你接到程序文档到提交程序这中间你所要完成的一切步骤。

看懂程序文档,弄清楚程序流程,划分功能模块,编码,分布测试,整体测试。

29在DD语句中,DCB参数的含义?

Use the DCB parameter to complete during execution the data set information in the data control block (DCB).

DSORG specifies the organization of the dataset, sequential or partitioned.

RECFM specifies the record format of the dataset, FB, F, V, VB or other.

DSNTYPE specifies the type of the dataset, PS, PO, or LIBRARY. BLKSIZE specifies the block size of the dataset, can be default. LRECL specifies the record length of the dataset. 30.开发周期的描述?

A开发前,对项目做详细的问卷调查和可行性分析,要产生可行性研究报告和行动方案等文档;

B开发期间,对项目进行需求分析,软件设计,编码,测试,并

产生需求分析规格说明书、概要设计规格说明书、详细设计说明书(包括MAP设计,数据库设计,算法设计,程序逻辑设计,程序流程图等)、项目开发计划书、测试需求说明书、测试设计说明书、项目测试计划书、测试报告书、项目总结报告、用户手册等;

C开发后,对项目进行维护和客户服务。 DB2:

1.主键和唯一索引的区别?

主键一定是唯一性索引,唯一性索引并不一定就是主键。一个表中可以有多个唯一性索引,但只能有一个主键

所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。

主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。 2.Plans 和packages的作用?

一个CICS的应用程序访问DB2的数据时,必须要做一些相应的准备工作,涉及DB2的是bind墓獭ind是产生一个plan的

过程,plan包括程序中所有使用的SQL语句,在执行的时候,CICS程序可以通过plan访问DB2的数据。这些plan位于DB2内部,在CICS连接DB2的时候,每个线程都要指定一个相应的plan。在CICS中,定义DB2CONN的时候,在pool的线程的属性中,有相应的plan的名称;定义DB2ENTRY的时候,在entry的线程的属性中,有相应的plan的名称。

一.CICS的程序访问DB2数据的时候,需要做下面的一些准备工作。

1. 第1步,CICS的程序做DB2的预编译。在此步骤中,DB2的预编译建立DBRM(database request model),包括程序中所有的SQL语句的信息。

2. 第2步CICS的语句翻译,第3步编译,第4步链接都是CICS程序的通常步骤,无论是否访问DB2。在第4步链接的时候,如果访问DB2,会包括DSNCLI(CICS DB2 language interface module)。

3.如果访问DB2,一个附加的步骤是第5步bind,Bind过程需要DB2和第1步生成的DBRM,据此产生plan,程序就可以访问DB2了。任何 CICS的应用程序访问DB2,都需要bind过程。Bind过程是将DBRM中涉及的SQL语句放进一个操作的表格,并被翻译成DB2运行SQL语句使用的control structures。作为结果,可以放到一个package中,或者直接放到一个plan中。 二.Plans 和packages的介绍应用程序在执行的时候,访问DB2

数据是通过plan来进行的。如果由DBRM得到的可操作的SQL语句直接放入一个plan中,我们称作DBRM直接bind到plan。另外,还可以将由DBRM得到的可操作的SQL语句放入一个package中(使用BIND PACKAGE 命令),之后,将有联系的packages放入一个集合中,再把集合(或者多个package)bind到一个plan中。相应的DBRM可以是服务一个应用程序或多个应用程序。另一方面,当plan生成后,需要相应的维护。在一个应用程序或多个应用程序中,如果修改了SQL语句,就需要重新生成相应的DBRM。在plan生成时,采用的是DBRM直接bind到plan的话,就需要把此plan中所有的DBRM重新bind,包括修改的应用程序和没有修改的应用程序。当plan在 bind时,应用程序是不能通过它来访问DB2的。在plan生成时,采用的是DBRM bind到package的话,只需要把修改的应用程序的DBRM重新bind到package(和原来package的名字要求一致)中,就可以了,不用再bind到plan。Plan中其他的packages不需要做任何的操作。当package在bind时,不使用此package的应用程序可以通过plan访问DB2。在CICS环境中,定义连接DB2CONN(pool thread)和DB2ENTRY(entry thread)时,会指定使用的plan。当CICS的应用程序访问DB2的数据时,会告诉DB2要使用的plan,DB2再找到plan,对数据进行操作。entry thread指定的plan,采用的是DBRM直接bind到plan的话,当对某个程序修改后,bind时,使用此DB2ENTRY的所有CICS

交易,就不能访问DB2的数据。pool thread指定的plan,采用的是DBRM直接bind到plan的话,当对某个程序修改后,bind时,所有的CICS交易(没有指定使用entry thread),就不能访问DB2的数据,影响是比较大的。所以,避免将DBRM直接bind到plan中,而采用将各自的DBRM bind到不同的package中,是一个很好的选择。

3.SQL语句中各个子句执行的顺序。 order by 永远要写在sql语句的最后一条。 1、

FROM 子句。2、WHERE 子句。3、GROUP 子句。4、

HAVING 子句。5、SELECT 子句。6、ORDER BY 子句。 4.QSAM和VSAM的ESDS有什么区别?

在用法上基本上没有区别。QSAM是顺序数据集。VSAM的ESDS是VSAM数据集

使用上ESDS用有VSAM数据集的一些特性,如可以扩展123次,而QSAM的只可以16次。从数据访问方式上,两者基本相同,都是顺序访问。

5.CALL(Static CALL,Dynamic CALL) & LINK的区别。 Be aware that CALL does not mean the called module is part of the load module. That is only true if it is a Static call. Dynamic calls do not include the called routine in the load module.

This question must be related to CICS since COBOL does not have a LINK statement. There are distinctions as listed below:

Static CALL: Called module is part of the load module. CICS knows nothing about it and doesn't get involved with the communication between the modules.

Dynamic CALL: Called module is not part of the load module. CICS needs a PPT entry for both the called and calling program. Under the covers, CICS treats it like a LINK request. Arguments are passed as with a static call.

LINK: CICS command-level request to pass control to another module with a return back to the caller. Arguments are passed in a COMMAREA.

6.动态的 SQL和静态的SQL的区别?

dynamic SQL: sql statements that are prepared and executed within an application program while the program is executing. In dynamic SQL ,the SQL source is contained in host language variables rather than being coded into the application program.The SQL statement can change several times during the application program's execution. static SQL: SQL statements,embedded within a program, that are perpared during the program perparation process(before the program is executed )after being perpared,the SQL statement does not change(although values of host variables that are specified by the statement might chang).

7.COBOL & DB2程序的编译过程是哪几步?BIND是做什么用

的?Package & plan 如何理解的?

4部 DB2 pre-compiler (if embedded SQL used), CICS translator (if CICS program), COBOL compiler, Link editor, binding the DBRMs using the package or plan.

预编译时把SQL语句全部提出来,通过绑定放到DBRM指定的PLAN中,再把没有SQL语句的程序编译成机器语言,执行时把机器语言和PLAN连接起来。PLAN中存放的是访问路径。 a) 预编译作业步:检查SQL语句并产生数据库请求模块;检查主机变量;

b) COBOL作业步:检查COBOL程序的语法及语义; c) 连接作业步:检查CICS命令和语法,产生可执行模块; d) 绑定作业步:BIND PLAN/PACKAGE,绑定COBOL和DB2;

COBOL DB2的编译过程有预编译,编译,链接和绑定。 预编译:是DB2的预编译,对SQL语句进行处理,把源程序中的SQL语句提取出来到DBRM。

编译: 是COBOL的编译,对没有SQL语句的源程序进行正常的COBOL的编译。

连接: 对源程序进行连接,生成编译后的可执行模块。 绑定: 对产生出来的可执行程序模块和生成的PLAN进行绑定

BIND的作用是检查DB2的语法,并选择最优的路径去访问

PPT TCT FCT TCP

Program Processing Table Terminal Control Table File Control Table Terminal Control Program

TCTUA Terminal Control Terminal User Area DCT TDQ EIP

Destination Control Table Transient Data Queue Execution Interface Program File Control Program Interval Control Program Task Control Program Program Control Program Storage Control Program Task Control Area

FCP ICP KCT PCP SCP TCA

TCTTE Terminal Control Table Terminal Entry TSQ TWA AID CWA MRO QID

Temporary Storage Queue Task Work Area Attention Identifier Common Work Area Multi Region Operation Queue Identifier

本文来源:https://www.bwwdw.com/article/czx7.html

Top