新手入门之如何创建和使用VSAM(IDCAMS)


  • administrators

    可以用来操作VSAM和GDG文件

    1. 关于VSAM:
      Vsam文件:
      Vsam(virtual storage access method)文件是IBM在虚拟存储和树型数据结构基础上,为满足数据量大,存取速度快和维护起来方便而发展起来的一种文件组织形式。VSAM以索引键(key)或相对字节地址(BRA)来安排纪录的存放位置,它支持直接访问和顺序访问两种方式。
      VASM文件结构:
      VSAM文件中的数据都以纪录的格式存放,逻辑纪录是访问数据的单位,VSAM文件将纪录存放一个个CI(Control Interval)中,一个CI是DASD中一片连续的区域,用来存储数据纪录以及控制信息。当读取一个记录时,这个记录所在的CI将整个读到VSAM I/O缓冲区,然后用户要读的纪录才从VSAM缓冲区传输到用户定义工作区。CI的大小在创建VSAM文件时由用户指定,也可以让系统自动选择合适的大小。
      每个CI含有如下信息:
      逻辑纪录:纪录用户数据,每个CI可以含有多个逻辑纪录
      自由空间:每个CI可以有一定的自由空间,可以用来插入新的纪录
      控制信息:主要是RDF和CIDF,RDF描述每一个记录的信息,而CIDF则描述整个CI的信息。
      CICS支持以下三种VSAM文件:
      KSDS(Key Sequenced Data Set)
      ESDS(Entry Sequenced Data Set)
      RRDS(Relative Record Data Set)
      VSAM文件的定义:
      VSAM数据集可以通过访问方法集(Access Method Services)的DEFINE CULSTER或ALLOCATE命令来定义,定义VSAM时要制定数据集的属性。
      如果系统中使用了SMS来管理存储,定义的数据集又是系统管理的数据集,则可指定DATA CLASS,MANAGEMENT CLASS和STORAGE CLASS,
      也可以使用系统默认的存储定义。
      VSAM数据集的属性信息有:
      INDEXED | NONINDEXED | NUMBERED | LINEAR:指定数据集的形式分别是 KSDS | ESDS | RRDS | LDS
      RECORDSIZE:指定纪录的平均和最大长度。
      KEY: 指明纪录的平均和最大长度
      CATALOG: 指明所用编目的名字和口令
      VOLUMES: 指明所用得卷
      REDORDS | KILOBYIES | MEGABYIES | TRACKS | CYLINDERS:以不同方式份分配空间的大小
      BUFFERSPACE: 指明处理数据集时应分配的最小缓冲区
      CONTRLINTERVALSIZE: 指明CI的大小
      SPANNED: 指明CI可否跨CI存放
      IMBED: 指示是否把索引的顺序集放在相应的CA中
      FREESPACE 指明预留自由空间大小
      SHAREOPTION 指明文件在不同REGION之间共享级别

      ****** ***************************** Top of Data ******************************
      000001 //jobcard                                 
      000007 //********************************************************************* 
      000008 //*       STEP1   VSAM                                                  
      000009 //********************************************************************* 
      000010 //STEP1   EXEC PGM=IDCAMS                                               
      000011 //SYSPRINT DD SYSOUT=*                                                  
      000012 //SYSOUT   DD SYSOUT=*                                                  
      000013 //SYSIN    DD *                                                         
      000014   DELETE your.vsam.name CLUSTER PURGE                            
      000015   DEFINE CLUSTER(NAME(your.vsam.name) -                          
      000016          INDEXED -                                                      
      000017          KEYS(5 0) -                                                    
      000018          REC(50 10) -                                                   
      000019          RECSZ(80 80) -                                                 
      000020          CISZ(4096) -                                                   
      000021          FSPC(10 20) -                                                  
      000022          VOL(STN813) -                                                  
      000023          SHR(3 3) -                                                     
      000024          UNQ -                                                          
      000025          SPEED)                                                         
      000026 /*                                                                      
      000027 //*********************************************************************
      000028 //*       STEP2   INPUT                                                 
      000029 //********************************************************************* 
      000030 //STEP2   EXEC PGM=IDCAMS                                               
      000031 //SYSPRINT DD SYSOUT=*                                                  
      000032 //SYSOUT   DD SYSOUT=*                                                  
      000033 //INFILE   DD *                                                         
      000034 AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA                                    
      000035 /*                                                                      
      000036 //OUTFILE DD DSN=your.vsam.name,DISP=SHR                         
      000037 //SYSIN DD *                                                            
      000038   REPRO IFILE(INFILE) -                                                 
      000039         OFILE(OUTFILE)                                                  
      000040 /*                                                                      
      000041 //********************************************************************* 
      000042 //*       STEP3   PRINT                                                 
      000043 //********************************************************************* 
      000044 //STEP3   EXEC PGM=IDCAMS                                               
      000045 //SYSPRINT DD SYSOUT=*                                                  
      000046 //SYSOUT   DD SYSOUT=*                                                  
      000047 //INFILE DD DSN=your.vsam.name,DISP=SHR                          
      000048 //SYSIN DD *                                                            
      000049   PRINT IFILE(INFILE) -                                                 
      000050         CHAR                                                            
      000051 /*                                                                      
      ****** **************************** Bottom of Data ****************************
      

      定义一个ESDS类型的VSAM文件,如果该文件存在,则先删除

      //jobcard                                                                
      //*********************************************************************                                                                
      //*       STEP1   ESDS                                                                
      //*********************************************************************                                                                
      //STEP1   EXEC PGM=IDCAMS                                                                
      //SYSPRINT DD SYSOUT=*                                                                
      //SYSOUT   DD SYSOUT=*                                                                
      //SYSIN    DD *                                                                
        DELETE STJI.MJA.VE025.TESTVS CLUSTER PURGE                                                                
        IF MAXCC=8 THEN SET MAXCC=0                                                                
        DEFINE CLUSTER(NAME(STJI.MJA.VE025.TESTVS) -                                                                
        REC(50 10) -                                                                
        RECSZ(80 80) -                                                                
        CISZ(4096) -                                                                
        FSPC(10 20) -                                                                
        VOL(STN813) -                                                                
        SHR(3 3) -                                                                
        NONINDEXED -                                                                
        SPEED)                                                                
      /* 
      

      定义一个RRDS类型的VSAM文件,如果该文件存在,则先删除

      //jobcard                                                        
      //*********************************************************************                                                        
      //*       STEP1   RRDS                                                        
      //*********************************************************************                                                        
      //STEP1   EXEC PGM=IDCAMS                                                        
      //SYSPRINT DD SYSOUT=*                                                        
      //SYSOUT   DD SYSOUT=*                                                        
      //SYSIN    DD *                                                        
        DELETE STJI.MJA.VE025.TESTVS CLUSTER PURGE                                                        
        IF MAXCC=8 THEN SET MAXCC=0                                                        
        DEFINE CLUSTER(NAME(STJI.MJA.VE025.TESTVS) -                                                        
        REC(50 10) -                                                        
        RECSZ(80 80) -                                                        
        CISZ(4096) -                                                        
        FSPC(10 20) -                                                        
        VOL(STN813) -                                                        
        SHR(3 3) -                                                        
        NUMBERED -                                                        
        SPEED)                                                        
      /*     
      


Log in to reply
 

Looks like your connection to MainFrame was lost, please wait while we try to reconnect.