### JCL实验报告知识点概述
#### 一、生成PDS或SDS
##### 1.1 生成SDS (Sequential Data Set)
- **目标**: 通过执行特定的JCL程序来创建一个新的顺序数据集(SDS)文件`CN0010.TAN.FILE`。
- **步骤**:
- 使用`IEFBR14`语句,这是一个特殊的控制语句,其作用是“空执行”,即不执行任何实际操作,仅用于创建SDS。
- 在DSN(Data Set Name)后指定数据集名称`CN0010.TAN.FILE`。
- `SPACE`参数用于分配磁盘空间。其中,`TRK(10,10)`意味着首次分配10个磁道,再次分配时也分配10个磁道。需要注意的是,实际分配的磁道数比指定值多1个,具体原因未知。
- `DCB`(Data Communications Block)定义数据集属性,包括`RECFM`(Record Format)、`LRECL`(Logical Record Length)和`BLKSIZE`(Block Size)。
##### 1.2 生成PDS (Partitioned Data Set)
- **删除SDS**: 首先删除之前创建的SDS文件`CN0010.TAN.FILE`。
- **修改SPACE语句**: 在`TRK`后的括号中添加第三个参数,指定目录空间大小,通常设置为256字节记录的数量。
- **执行程序**: 通过`SUB`命令提交JCL程序,创建新的PDS文件`CN0010.TAN.FILE`。
#### 二、流内PROC与CATALOG PROC
##### 2.1 流内PROC
- **定义**: 流内PROC指主程序和子程序位于同一个PDS数据集中。
- **特点**:
- 主程序与子程序必须在同一数据集中才能相互调用。
- 示例程序包括主程序BB和子程序AA,两者位于同一PDS数据集的不同成员文件中。
- 执行结果验证了主程序成功调用了子程序,并实现了预期功能。
##### 2.2 CATALOG PROC
- **定义**: CATALOG PROC是将主程序和子程序整合到单个member或SDS文件中的一种方式。
- **特点**:
- 不需要像流内PROC那样要求主程序和子程序位于同一数据集中。
- 示例中使用了两个成员文件:TEXT作为CATALOG PROC,TEXT1作为示例文件。
- 结果显示,CATALOG PROC同样能够实现与流内PROC相同的功能。
#### 三、使用COND进行条件判断
- **COND语句**: 用于根据前一个作业步的返回码(Return Code)来决定是否执行当前作业步。
- **基本逻辑**:
- 如果返回码满足COND设定的条件,则当前作业步被跳过。
- 如果返回码不满足条件,则继续执行当前作业步。
##### 3.1 返回码满足条件
- **实例**: 设定`COND=(7,LT,STEP1)`,如果`STEP1`的返回码小于7,则不执行STEP2。
- **结果**: 程序未生成新的数据集。
##### 3.2 返回码等于条件
- **实例**: 将COND条件改为等于返回码的值。
- **结果**: 程序执行STEP2并生成新文件`CN0010.TAN.BB`。
##### 3.3 返回码不满足条件
- **实例**: 修改COND条件使得返回码不满足条件。
- **结果**: 正常执行STEP2,但由于条件未满足,作业步未被跳过。
通过上述实验,我们可以了解到JCL在IBM大型机环境中创建不同类型的文件(如SDS和PDS)的基本方法以及如何利用COND语句进行条件判断。这些知识对于理解大型机环境下的文件管理机制至关重要。