VSAM操作笔记_COBOL操作VSAM
来源:互联网 发布:淘宝搜索代码 编辑:程序博客网 时间:2024/05/20 14:27
下载: VSAM操作笔记.doc
1. 概要
1.1 VSAM文件 ① 创建 ② 初始化 ③ 删除 ④打印1.2 使用命令直接对VSAM 进行操作
1.3 COBOL中对VSAM文件的记录的 CRUD
2. VSAM文件 ① 创建 ② 初始化 ③ 删除
重点: VSAM文件创建完后, 必须初始化, 即给VSAM文件装载记录注意: 作业名以 userid 开头, 否则 需在 SDSF Menu 查看 Status Of jobs时, 需以 “S 作业名” 查看
即, 当用户查看作业作业, 进入Status Of jobs 后, 看到的是以 userid 开头的作业,
如, 你的userid=S10, 而你的jobname为 S11VSAMJ, 进入Status Of jobs 后是看不到的S11VSAMJ的.
查看的方式是: S S11VSAMJ
2.1 创建VSAM
2.1.1 JCL
//S10DEFVS JOB (TESTING),'S10',CLASS=A, // MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=&SYSUID //DEFVSAM EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * DEFINE CLUSTER ( + NAME(S10.VS) + RECSZ(80 80) + RECORDS(1000 2) + KEYS(2 0) + VOL(DMTD04)) /*
2.1.2 说明
NAME(S10.VS)VSAM name, 必须以 userid (用户id)开头,如 userid=S10, 则文件名为 S10.VS
RECSZ(80 80)record 的长度为 80, 固定长度
KEYS(2 0)KEY 的长度为2 , 从记录的第一个字符开始
VOL(DMTD04)在DMTD04 卷 上创建VSAM文件
2.1.3 执行结果
2.2 初始化 VSAM
2.2.1 JCL
//S10INIT JOB (TESTING),'S10',CLASS=A, // MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=&SYSUID //SORTVSAM EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTIN DD * 00 WU QIN FEI /* //SORTOUT DD DSN=S10.VS,DISP=OLD //SYSIN DD * SORT FIELDS=COPY OUTREC FIELDS=(1,80) /*
2.2.2 说明
通过 流内数据集的方式 给 VSAM文件装载数据
可通过命令查看/修改 VSAM中的数据, 见第三章.
2.2.3 补充: 将其它文件数据装载进VSAM进行初始化
//S10INIT2 JOB (TESTING),'S10',CLASS=A, // MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=&SYSUID //**************************************************** //* INIT VSAM file with other file (S10.BPG.FILE1)//****************************************************//STEP01 EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* REPRO + INDATASET(S10.BPG.FILE1) + OUTDATASET(S10.VS) /*
2.3 删除VSAM
//S10DEL JOB (TESTING),'S10',CLASS=A, // MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=&SYSUID //DEFVSAM EXEC PGM=IDCAMS //DD1 DD VOL=SER=DMTD04,UNIT=3390,DISP=OLD //SYSPRINT DD SYSOUT=* //SYSIN DD * DELETE - S10.VS - FILE(DD1) - PURGE - ERASE /*
2.4 打印VSAM
//S10PRINT JOB (TESTING),'S10',CLASS=A, // MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=&SYSUID //PRITVS EXEC PGM=IDCAMS //FILE1 DD DSN=S10.VS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSIN DD * PRINT INFILE(FILE1) CHAR /*
3. 使用命令直接对VSAM 进行操作
3.1 ditto ve/vb --浏览/修改 VSAM
ditto ve userid.VS ---修改
ditto vb userid.VS ---浏览
3.2 del --删除VSAM
del userid.VS ---删除
4. COBOL中对VSAM文件记录的 CRUD
4.1 read, 读指定key值的记录4.1.1 COBOL
IDENTIFICATION DIVISION. PROGRAM-ID. VSREAD. * ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN INDD RECORD KEY IS IN-ID ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM FILE STATUS IS IN-FILE-STATUS. * DATA DIVISION. FILE SECTION. FD IN-FILE. 01 IN-RECORD. 03 IN-ID PIC X(02). 03 IN-NAME PIC X(18). 03 FILLER PIC X(60). WORKING-STORAGE SECTION. 77 IN-FILE-STATUS PIC XX. * PROCEDURE DIVISION. OPEN INPUT IN-FILE. DISPLAY "OPEN STATUS: " IN-FILE-STATUS. 100-READ. MOVE '00' TO IN-ID. * READ IN-FILE INTO IN-RECORD ***WARN READ IN-FILE KEY IS IN-ID INVALID KEY DISPLAY "INVALID KEY" GO TO 100-END NOT INVALID KEY DISPLAY "READ ID ", IN-ID IF IN-ID = '00' THEN DISPLAY 'ID ', IN-ID, ' NAME IS ', IN-NAME GO TO 100-END END-IF END-READ. 100-END. CLOSE IN-FILE. DISPLAY "CLOSE STATUS: " IN-FILE-STATUS. STOP RUN.
4.1.2 JCL -- 使用VSAM
//S10RJ JOB (TESTING),'S10',CLASS=A, // MSGCLASS=H,MSGLEVEL=(1,1),NOTIFY=&SYSUID //STEP001 EXEC PGM=VSREAD //STEPLIB DD DSN=S10.LOADLIB,DISP=SHR //INDD DD DSN=S10.VS,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=*
4.2 write, 写入一条记录
IDENTIFICATION DIVISION. PROGRAM-ID. VSWRITE. * ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN INDD RECORD KEY IS IN-ID ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM FILE STATUS IS IN-FILE-STATUS. * DATA DIVISION. FILE SECTION. FD IN-FILE. 01 IN-RECORD. 03 IN-ID PIC X(02). 03 IN-NAME PIC X(18). 03 FILLER PIC X(60). WORKING-STORAGE SECTION. 77 IN-FILE-STATUS PIC XX. * PROCEDURE DIVISION. OPEN I-O IN-FILE. DISPLAY "OPEN STATUS: " IN-FILE-STATUS. 100-READ. MOVE '01' TO IN-ID MOVE 'ZHANGSAN' TO IN-NAME . WRITE IN-RECORD INVALID KEY DISPLAY "INVALID KEY, WRITE ERROR" GO TO 100-END NOT INVALID KEY DISPLAY "ID :" IN-ID " NAME:" IN-NAME END-WRITE. 100-END. CLOSE IN-FILE. DISPLAY "CLOSE STATUS: " IN-FILE-STATUS. STOP RUN.
4.3 rewrite, 修改指定key值的记录
IDENTIFICATION DIVISION. PROGRAM-ID. VSREWRIT. * ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN INDD RECORD KEY IS IN-ID ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM FILE STATUS IS IN-FILE-STATUS. * DATA DIVISION. FILE SECTION. FD IN-FILE. 01 IN-RECORD. 03 IN-ID PIC X(02). 03 IN-NAME PIC X(18). 03 FILLER PIC X(60). WORKING-STORAGE SECTION. 77 IN-FILE-STATUS PIC XX. * PROCEDURE DIVISION. OPEN I-O IN-FILE. DISPLAY "OPEN STATUS: " IN-FILE-STATUS. 100-READ. MOVE '00' TO IN-ID. READ IN-FILE KEY IS IN-ID INVALID KEY DISPLAY "INVALID KEY" GO TO 100-END NOT INVALID KEY DISPLAY "READ ID ", IN-ID IF IN-ID = '00' THEN DISPLAY 'ID ', IN-ID, ' NAME IS ', IN-NAME MOVE 'MARK' TO IN-NAME REWRITE IN-RECORD INVALID KEY DISPLAY "INVALID KEY" GO TO 100-END NOT INVALID KEY DISPLAY "REWRITE OK" END-REWRITE END-IF END-READ. 100-END. CLOSE IN-FILE. DISPLAY "CLOSE STATUS: " IN-FILE-STATUS. STOP RUN.
4.4 delete, 删除指定key值的记录
IDENTIFICATION DIVISION. PROGRAM-ID. vsdelete. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN INDD RECORD KEY IS IN-ID ORGANIZATION IS INDEXED ACCESS MODE IS RANDOM FILE STATUS IS IN-FILE-STATUS. DATA DIVISION. FILE SECTION. FD IN-FILE. 01 IN-RECORD. 03 IN-ID PIC X(02). 03 IN-NAME PIC X(18). 03 FILLER PIC X(60). WORKING-STORAGE SECTION. 77 IN-FILE-STATUS PIC XX. PROCEDURE DIVISION. OPEN I-O IN-FILE. DISPLAY "OPEN STATUS: " IN-FILE-STATUS. 100-READ. MOVE '00' TO IN-ID. READ IN-FILE KEY IS IN-ID INVALID KEY DISPLAY "INVALID KEY" GO TO 100-END NOT INVALID KEY DISPLAY "READ ID ", IN-ID IF IN-ID = '00' THEN DISPLAY 'ID ', IN-ID, ' NAME IS ', IN-NAME MOVE 'MARK' TO IN-NAME DELETE IN-FILE INVALID KEY DISPLAY "INVALID KEY" GO TO 100-END NOT INVALID KEY DISPLAY "DELETE OK" END-DELETE END-IF END-READ. 100-END. CLOSE IN-FILE. DISPLAY "CLOSE STATUS: " IN-FILE-STATUS. STOP RUN.
4.5 start, read next, 定位到指定key值记录, 顺序往下读完.
IDENTIFICATION DIVISION. PROGRAM-ID. vsstart. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN INDD RECORD KEY IS IN-ID ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC FILE STATUS IS IN-FILE-STATUS. DATA DIVISION. FILE SECTION. FD IN-FILE. 01 IN-RECORD. 03 IN-ID PIC X(02). 03 IN-NAME PIC X(18). 03 FILLER PIC X(60). WORKING-STORAGE SECTION. 77 IN-FILE-STATUS PIC XX. PROCEDURE DIVISION. OPEN I-O IN-FILE. DISPLAY "OPEN STATUS: " IN-FILE-STATUS. 100-START. display "start at 01". MOVE '01' TO IN-ID START IN-FILE KEY >= IN-ID INVALID KEY DISPLAY "INVALID KEY" GO TO 100-END NOT INVALID KEY DISPLAY "START OK" END-START. 100-READ. READ IN-FILE NEXT RECORD AT END DISPLAY "FILE IS END" GO TO 100-END NOT AT END DISPLAY 'ID ', IN-ID, ' NAME IS ', IN-NAME GO TO 100-READ END-READ. 100-END. CLOSE IN-FILE. DISPLAY "CLOSE STATUS: " IN-FILE-STATUS. STOP RUN.
- VSAM操作笔记_COBOL操作VSAM
- vsam
- VSAM文件IO操作返回码参考
- VSAM学习(1)
- 修改VSAM为只读
- CICS VSAM DB2
- VSAM contention的问题
- VSAM file status
- MAINFRAME之vsam
- VSAM文件结构及管理
- 删除弃置的isolate VSAM文件
- 工作总结之——KSDS, ESDS, VSAM数据集命名
- 工作总结之IDCAMS——VSAM文件定义及参数详解
- VSAM:视频监控系统 A System for Video Surveillance and Monitoring
- 操作笔记
- linux操作笔记
- db2常用操作笔记
- db2常用操作笔记
- win7下安装配置tomcat,java运行环境
- PHP中this,self,parent的区别
- jar not loaded servlet-api.jar
- C++关键词:const总结
- struts1 textarea 不换行
- VSAM操作笔记_COBOL操作VSAM
- Mysql 关键字\保留字列表
- 对Python中文分词模块结巴分词算法过程的理解和分析
- SocketTimeoutException和ConnectTimeoutException的区别
- 关于El的一些细节知识
- 数组上一系列查找问题
- OpenShift Redhat空间使用
- 使用智遥工作流,优化SAP请购流程
- 编码字符集与字符集编码的区别