This document covers the following topics:
A GSAM database uses the Generalized Sequential Access Method
         	  (GSAM) under DL/I. It is recognized by the
         	  'ACCESS=GSAM' keyword for the DBD statement in the DBD definition.
         	  A GSAM DBD does not specify any segment or field definitions. The
         	  corresponding PCB statement in the PSB definition uses
         	  'TYPE=GSAM'.
      
For more information regarding the definition of a GSAM DBD
         	  refer to the IMS Utilities Reference Manual of IBM.
      
GSAM databases are supported by ADL with some restrictions
         	  regarding the DBD definition, the JCL and the OPEN command.
      
In particular, the following restrictions are valid for a GSAM
            	  DBD:
      
The records must have fixed length, i.e. the RECFM
               		 keyword of the DATASET statement in the DBD definition must have a
               		 value of 'F' or 'FB'. 
            
The record length (RECORD keyword) must be at least 12
               		 bytes.
            
If these conditions are met, the GSAM DBD can be converted
         	  and the data can be loaded into Adabas, as described in the next section.
      
Like for any other converted database, the data set corresponding to a
         	  converted GSAM database cannot longer be referenced in the JCL, because the
         	  data is in Adabas. Consequently, the record format
         	  (RECFM) parameter cannot be overwritten in the JCL. With
         	  DL/I the disposition (DISP) of the output dataset defines, whether
         	  a new dataset is created or whether the data is added to the end of the
         	  dataset. With ADL the data is always added to the end. If you want to insert
         	  data from the beginning of a data set, which does already contain data, you
         	  must refresh the Adabas file before your program starts. This can be performed
         	  by either using the REFRESH function of the Adabas
         	  ADADBS utility or manually with the Adabas Online System.
      
The DL/I OPEN and CLSE calls are ignored by
         	  ADL. Under DL/I you can add an option to the OPEN call, which
         	  specifies the kind of control character in the first byte of each record in the
         	  output data set. With ADL there is always no control character in the first
         	  byte of each output record.
      
With DL/I an application can use the CLSE and
         	  OPEN commands to read a GSAM database after it was
         	  loaded, without terminating in between. This works in the same way after the
         	  migration, because ADL does not need these calls for a re-positioning.
      
Run the GSAM DBD through the step 1 (assembly), step 2 (CBC
         	  utility) and step 3 (create input decks) of the ADL control block conversion
         	  (CBC). For a more detailed description of the ADL CBC, see the section
         	  ADL Conversion Utilities for DBDs and PSBs in this
         	  documentation. Step 4 (assemble and link-edit Adabas user 6 extension) is not
         	  required for a GSAM database.
      
ADL adds a segment 'GSAMROOT' and a sequence field
         	  'GSAMFLD' to the DBD definition. The length of the segment is the
         	  same as specified with the 'RECORD' keyword in the
         	  DATASET statement. The field always has a length of 12 bytes.
         	  Additionally, ADL adds a sensitive segment 'GSAMROOT' to the
         	  GSAM PCB.
      
The ADACMP cards which are generated by step 3 of the ADL
         	  conversion utility is used as input for the ADACMP COMPRESS
         	  utility. Note, that the USERISN=YES option must not be used for
         	  any Adabas utility run against a file of a converted GSAM DBD.
      
There is no need to run the ADL unload utility when unloading the DL/I
         	  GSAM database. Instead, the sequential file can directly be used
         	  as input for the Adabas compression utility, by specifying the
         	  GSAM dataset as DDEBAND for ADACMP. You
         	  must not use the ADL user exit 06 for the compression.
      
Use the following parameter settings for ADALOD when
         	  loading the data into Adabas:
      
DATAPFAC=1 DSREUSE=NO ISNREUSE=NO USERISN=NO
The GN, ISRT and GU calls are
         	  supported in the same way as under DL/I. GN and ISRT
         	  can be specified with or without a record search argument (RSA).
         	  With ADL the first 4 bytes of the RSA contain the Adabas ISN of
         	  the record and the last 4 bytes contain hexadecimal zeros. After a successful
         	  call, the RSA is also placed into the Key Feedback Area of the
         	  corresponding PCB. Further to these database calls, the system service calls
         	  CHKP and XRST are supported.
      
With the LOAD parameter of ADL, you can specify
         	  where the data of an ISRT call against a PCB with
         	  PROCOPT=L or LS is to be written. See the section
         	  ADL Parameter
            	  Module in the ADL Installations
         	  documentation for more information about the LOAD
         	  parameter. When you specify 'LOAD=UTILITY' the data is written to
         	  a variable blocked sequential file. For a GSAM database, this file
         	  can be loaded back into Adabas in the same way as described above. Especially
         	  you must set USERISN=NO, and you must not use the ADL user exit
         	  6.
      
When 'LOAD=DIRECT' is specified as ADL parameter,
         	  you can insert and read data simultaneously in one application by using
         	  different PCBs in the PSB. In particular you do not need to issue a
         	  CLSE and an OPEN call, when you want to retrieve data
         	  after inserting it. You can also mix the ISRT and GET
         	  calls as you like, and the position is kept for each PCB.
      
Further to inserting and retrieving data, you can also replace and
         	  delete records, by using the REPL (replace) and DLET
         	  (delete) calls. The corresponding PCB must specify PROCOPT=R or
         	  =D, respectively. The data storage of a deleted record is not
         	  released, so that a new inserted record is put to the end of the database, as
         	  expected for GSAM databases.
      
Note:
An Adabas backout after a delete request acts like a re-insert, i. e.
         	  the record is inserted to the end of the database. After such a delete/backout
         	  the data will be therefore in another sequence than before.
      
After the data conversion you can manipulate it with Natural. This includes update and delete requests. Because there is no ADL internal pointer field stored with the data, there is no need to use the ADL Consistency.
ADL translates a get request against a GSAM DBD to an
         	  Adabas L2 (read physical) call. For a high performance it is
         	  recommended to use the Adabas Multifetch feature for a GN sequence
         	  against a converted GSAM database. Refer to Using the Adabas
            	  Multifetch Feature, section
         	  Performance
            	  Considerations in the ADL Interfaces
         	  documentation for more information about the usage of the Adabas Multifetch
         	  feature against migrated data. In particular, you should make sure, that the
         	  correct Adabas command ID is prefetched.