VSAM INFORMATION Information taken from: VSAM Access Method Services and Progrmming Techniques, by James Martin.... . VSAM - very popular access method .. introduced by IBM in the 1970s along with the IBM Series 370 machines. .. replaced older access methods (ISAM, BDAM, And virtual counterparts.) .. Is the underlying data management access method that most high performance DBMSs for IBM use .. A a thorough knowledge of VSAM is required. .. Widely used for many forms of file access .. Most mainframe IBM users still use VSAM. .. Your knowledge of VSAM will support your studies in Database Processing and all direct file accessing using IBM mainframes. VSAM Data Set Structure: . VSAM data set is often called a "cluster." . A KSDS CLUSTER has TWO COMPONENTS: AN "INDEX" COMPONENT AND A "DATA" COMPONENT. . ESDS & RRDS CONSISTS OF DATA COMPONENT ONLY. .. KSDS = KEY SEQUENCED DATA SET(INDEXED FILE) .. RRDS = RELATIVE RECORD DATA SET (RELATIVE I/O) .. ESDS = ENTRY SEQUENCED DATA SET (SEQUENTIAL FILE) . VSAM KSDS FACILITY PROVIDES THE WIDEST RANGE OF FEATURES AND CAPABILITIES, AND KSDS CLUSTERS ARE MORE WIDELY USED THAN EITHER DSDS OR RRDS CLUSTERS. . WILL DISCUSS RRDS CLUSTERS LATER ACCESS METHOD SERVICES(AMS) . SUPPLIED WITH VSAM . IS A GENERAL-PURPOSE UTILITY PROGRAM . USED for WIDE RANGE OF FUNCTIONS TO SUPPORT VSAM DATA SETS AND THEIR APPLICATIONS. SUCH FUNCTIONS INCLUDE: 1. DEFINING,ALTERING, AND DELETING VSAM DATA SETS 2. LISTING AND MAINTAINING VSAM CATALOG ENTRIES 3. LOADING, COPYING, AND PRINTING VSAM DATA SETS 4. CONSTRUCTING ALTERNATE INDEXES 5. RECOVERING FROM VARIOUS TYPES OF ERRORS 6. PORTING DATA SETS BETWEEN OPERATING SYSTEMS . A KSDS CLUSTER CONSISTS OF A DATA COMPONENT CONTAINING CONTROL INTERVALS CONTAINING RECORDS (WE WILL DESCRIBE CONTROL INTERVALS AND CONTROL AREAS LATER.....), FREE SPACE, CONTROL INFO, AND AN INDEX COMPONENT, USED TO LOCATE RECORDS ====================== NOW, UNDER THE OPERATING SYSTEM HERE AT UNF, WE ARE USING A "VIRTUAL MACHINE" CONCEPT, WHICH GIVES THE USER THE FEELING OF A DEDICATED MACHINE. WHEN YOU LOG ONTO THE CONTROL PROGRAM (CP) AND SUBMIT YOUR USERID AND PASSWORD, YOUR PROFILE EXEC IS EXECUTED AND YOU ARE ASKING FOR YOUR OWN COPY OF CMS. CMS GIVES YOU AN A-DISK. THE A-DISK IS IN CMS FORMAT AND USES CMS FEATURES AND SUPPORT UTILITIES, SUCH AS "PRINT" "FILEDEF", AND MANY OTHER FEATURES THAT OBSCURE YOU (IN MANY CASES) FROM THE UNDERLYING ACTIVITIES - JCL, IN POINT. BUT THE CMS FORMAT OF THE A DISK IS NOT THE FORMAT THAT VSAM NEEDS, BECAUSE OF ITS COMPLEX ORGANIZATION (LATER) VSAM TRIES TO SIMPLIFY THE JCL AND CONTAINS CATALOGS WITH LOTS OF JCL LANGUAGE INFORMATION. NOT TOO MANY YEARS AGO, IN ORDER TO COMMUNCIATE WITH THE OPERATING SYSTEM, PROGRAMMERS HAD TO SUBMIT JCL "DECKS" OR JCL PROCEDURES. IN THESE PROCEDURES, YOU CITED A JOB NAME AND SPECIFICALLY CITED EACH ACTIVITY YOU DESIRED, SUCH AS COMPILATION, LINK EDITING, EXECUTION, ETC. THEN, ACCOMPANYING EACH OF THESE "JOB STEPS" WERE THE SUPPORT FILES THAT YOU HAD TO NAME... FOR COMPILATION, YOU CALLED THE COMPILER AND PROVIDED IT INPUT EITHER "IN LINE" VIA A DECK OR A SPECIFIC DATA SET NAME (FILE....) THAT ALREADY EXISTED ON DISK, LET'S SAY. YOU ALSO HAD TO PASS IT THESE FILES VIA "DD" CARDS (DATA DEFINITION STATEMENTS) WHERE YOU NAMED THESE FILES, CITED WHAT DISK THEY WERE LOCATED ON, THE LOGICAL RECORD LENGTH, BLOCK SIZE, DISPOSITION OF WHAT YOU WANTED THE OS TO DO WITH THE DATA SET WHEN THE ACTIVITY WAS COMPLETED, AND SO FORTH. FOR EXAMPLE, IN COMPILATION, YOU CREATE AN OBJECT PROGRAM WHICH IS NOT IN ITSELF EXECUTABLE. VIA JCL, YOU WOULD HAVE TO "PASS" THIS OBJECT FILE TO THE NEXT STEP, LINK EDITING. LINK EDITING CALLED A PROGRAM (THE OS-PROVIDED LINKAGE EDITOR) WHICH USED YOUR OBJECT PROGRAM AS INPUT, ANY SYSTEM LIBRARIES, ANY OF YOUR PERSONAL LIBRARIES, AND CREATED A "LOAD MODULE". NOW, YOU WOULD HAVE TO TELL THE LINK EDITOR, VIA JCL CARDS WITH PARAMETERS, TO RELEASE THE OBJECT VERSION OF YOUR COMPILATION (SINCE IT IS NOT NEEDED ANY MORE) BUT PASS ON TO EXECUTION THE FILE IN WHICH YOUR LOAD MODULE (EXECUTABLE CODE NOW...) IS TO THE EXECUTION STEP. THE EXECUTION STEP TOOK YOUR FILE CONTAINING THE LOAD MODULE, LOADED IT INTO PRIMARY MEMORY, AND RAN IT. BUT, VIA DD CARDS, YOU HAD TO SUPPLY ONE DD CARD (ANALYGOUS TO YOUR FILEDEF ENTRIES) PER FILE WITH A "DISPOSITION" FOR EACH OF THE INPUT AND OUTPUT FILES, SUCH AS OUTPUT DISK FILES, THE PRINTER, ETC. NOW, BACK TO CMS: THE JCL SUPPORTING VSAM ACTIVITIES IS VERY COMPLEX. VSAM TRIES TO SIMPLIFY THE JCL (LIKE CMS) AND CREATES MANY OF THE SUPPORT UNDERLYING DATA STRUCTURES (LIKE CATALOGS, INDEXES, AS NEEDED FOR VSAM) FOR YOU AS WELL AS PROVIDING SEVERAL UTILITIY PROGRAMS THAT ARE DESIGNED TO ACCESS VSAM FILES, SUCH AS VSAM PRINT, VSAM REPRO, ETC. BUT, IN ORDER FOR VSAM TO DO THESE THINGS FOR YOU, YOU MUST SET UP YOUR OWN VSAM ENVIRONMENT, WHICH INCLUDES FORMATTING YOUR OWN "C" DISK IN A MANNER THAT IS ACCESSIBLE BY THE SERVIES PROVIDED BY VSAM. YOU MUST THEN DEFINE YOUR MASTER CATALOG, SO VSAM CAN FIND YOUR FILES. YOU MUST ALLOCATE THE PHYSICAL SPACE ON DISK FOR YOUR CLUSTER (DATA PORTION AND INDEX PORTION). YOU MUST NAME THESE FILES AND REQUEST A CERTAIN AMOUNT OF DISK SPACE. YOU MUST TELL THE VSAM UTILITIES (THAT DEFINE YOUR CLUSTER FOR YOU) YOUR RECORD SIZE, HOW MANY TRACKS OF DISK TO ALLOCATE FOR YOUR FILE, THE LOCATION AND SIZE OF YOUR RECORD KEY, THE NAMES OF YOUR DATA AND INDEX FILES, ETC. GIVEN THAT YOU HAVE A CATALOG, HAVE ALLOCATED SPACE, HAVE DESCRIBED SEVERAL OF YOUR RECORD AND FILE PARAMETERS, THEN, UPON REQUEST, VSAM CAN NOW CREATE A VSAM FILE DIRECTLY FOR YOU FROM YOUR SORTED SEQUENTIAL FILE. (YOU MAY CREATE YOUR OWN FILE VERY EASILY TOO WITHOUT THE VSAM REPRO BY SIMPLY CREATING THE FILE (AFTER SPACE, ...., HAS BEEN NAMED) VIA A COBOL PROGRAM. REMEMBER: ACCESS IS SEQUENTIAL, OPEN FOR OUTPUT, ORG IS INDEXED, RECORD KEY IS WHATEVER....(AND ALTERNATE KEYS SPECIFIED, IF ANY...). ONCE THIS FILE IS CREATED, YOU ARE ON YOUR WAY WITH THE COBOL INSTRUCTIONS AND TECHNIQUES DISCUSSED IN CLASS AND IN YOUR TEXTBOOK. BUT, IN ITS INFININTE KINDNESS, VSAM ALSO GIVES YOU MANY UTILITIES THAT YOU MAY USE AS NEEDED. A FEW ARE INCLUDED IN VSAM INFO D, AND INCLUDE: A PRINT FACILITY, A DELETE FACILITY, A LIST CATALOG FACILITY, A VERIFY FACILITY, AND OTHERS. ++++++++++++++++++++++++++++++++++++++++++++++++ VSAM STORAGE STRUCTURES . KSDS HAS AN INDEX COMPONENT AND A DATA COMPONENT . PHYSICAL I/Os DONE WITH BLOCKS IN CONVENTIONAL ACCESS METHODS. IN VSAM, PHYSICAL I/O DONE IN CONTROL INVERVALS. . A CONTROL INTERVAL CONTAINS 1. RECORDS 2. CONTROL INFORMATION (record descriptors) 3. FREE SPACE (FOR EXPANSION) ____________________________ draw: |_____|_____|_____|________|_| WHEN A VSAM DATA SET IS LOADED, CONTROL INTERVALS ARE CREATED AND RECORDS ARE WRITTEN INTO THEM. CONTROL INTERVALS ARE GROUPED TOGETHER INTO CONTROL AREAS. drawing of indexes, sequence sets, control areas and control intervals.... . THE INDEX IS USED TO LOCATE RECORDS IN THE DATA COMPONENT. . INDEX COMPONENT: .. INDEX SET, AND .. SEQUENCE SETS . ONE SEQUENCE SET IS NEEDED FOR EACH CONTROL AREA . ONE ENTRY WITHIN EACH SEQUENCE SET FOR EACH CONTROL INTERVAL WITHIN THAT CONTROL AREA. . THE RECORDS IN EACH CONTROL INTERVAL ARE MAINTAINED IN PHYSICAL SEQUENCE BY KEY VALUE, AND SEQUENCE SET ENTRIES MAINTAIN THE LOGICAL SEQUENCE OF THE CONTROL INTERVALS WITHIN EACH CONTROL AREA. . CONTROL INTERVALS IN A CONTROL AREA ARE NOT NECESSARILY IN PHYSICAL SEQUENCE ACCORDING TO THE KEY VALUES OF THE RECORDS CONTAINED IN THEM. THE SEQUENCE SETS ORDER THE CONTROL INTERVALS WITHIN CONTROL AREAS. . IF THERE IS MORE THAN ONE CONTROL AREA, THEN THERE IS AN INDEX SET IN ADDITION TO THE SEQUENCE SETS. . AN ENTRY IN THE INDEX SET OINTS TO EACH SEQUENCE SET. SO ONCE THERE IS MORE THAN ONE CONTROL AREA, THERE IS MORE THAN ONE SEQUENCE SET. THUS WE HAVE THE INDEX SET ATO MANAGE THE SEQUENCE SETS. . THUS TO ACCESS RECORDS, WE HAVE A TREE STRUCTURE, OR HIERARCHY: INDEX SET => SEQUENCE SET => CONTROL INTERVAL (TWO LEVELS OF INDICES) . THIS HIERARCHY GENERALIZES....CAN HAVE MULTIPLE INDEX SETS FOR EXTREMELY LARGE KSDSs. PLEASE NOTE (TO KEEP THINGS IN PERSPECTIVE) THAT KSDS CONTROL AREAS ARE QUITE LARGE AND MAY CONTAIN THOUSANDS OF RECORDS. A KSDS WOULD HAVE TO BE VERY LARGE TO REQUIRE TWO LEVELS OF INDEX SET RECORDS AND WOULD HAVE TO CONTAIN LITERALLY MILLIONS OF RECORDS BEFORE THREE LEVELS OF INDEX SET RECORDS WOULD BE REQUIRED. MORE NOTES: . ONE SEQUENCE SET PER CONTROL AREA . SEQUENCE SET ENTRY POINTS TO HIGHEST RECORD IN CONTROL INTERVAL . FREE SPACE IN CONTROL INTERVALS (FOR DATA AND SEQUENCE SETS TOO.) . CAN ALSO HAVE FREE CONTROL INTERVALS IN A CONTROL AREA (FOR GROWTH AND CONTROL INTERVAL SPLITTING) CONSIDER THE EXERCISE FOR THE NEXT DRAWING.... ADD REC6 (MOVED IN PLACE W/I CONTROL INT SEQUENCE SET UNCHANGED DELETE REC 1 - REC 3 "MOVED" ONTO REC 1 SEQUENCE SET UNCHANGED DELETE REC 3 - CI RETURNED TO AVAILABLE SPACE SEQUENCE SET ENTRY MODIFIED. ADD REC 7, REC8 .... NO ROOM ==> CONTROL INTERVAL SPLIT . A CONTROL INTERVAL IS ALLOCATED . ROUGHLY HALF RECORDS GO INTO EACH . SEQUENCE SET ALTERED TO REFLECT HIGHEST RECORDS IN THE TWO CONTROL INTERVALS. DRAW: ADDITIONAL FACTS: ISAM: ISAM WAS A STATIC WAY OF DOING THINGS USED LOGICAL DELETES REQUIRED "REORGANIZATION" PERIODICALLY VERY HARDWARE DEPENDENT DOWNTIME DURING REORGANIZATION VSAM: DYNAMIC AND FLEXIBLE AUTOMATICALLY REORGANIZES ITSELF DON'T TALK ABOUT "TRACKS" AND "CYLINDERS" ON SURFACE - JUST CLUSTERS OR Cis DISK SPACE CAN BE FRAGMENTED NO REASON FOR "DOWN TIME" FOR REORGANIZATION