The Access File (DBCTL)

In this section:

How to:

Access Files store database access information used to translate report requests into the required IMS direct calls. For example, the Access File can contain the PSB name, the PCB name, the type of PCB, segment key types, and secondary index information.

In older versions of the adapter, some of these attributes were specified in the Master File instead of the Access File, and the Access File was optional. Those Master Files are still supported by the adapter, However, in current versions of the adapter using the DBCTL environment, you only need a Master File and Access File, and the Access File can contain any attributes needed for accessing the IMS data source.

An Access File consists of 80-character records in comma-delimited format. A record in an Access File contains a list of attributes and values, separated by commas and terminated with a comma and dollar sign (,$). This list is free-form and spans several lines if necessary.

You can specify attributes in any order. FOCUS reads blank lines, and lines starting with a dollar sign in column one, as comments.

In most environments, you select a PSB prior to invoking FOCUS. However, if you connect to IMS using the DBCTL environment, you select the PSB during your session, and you have the option of switching PSBs between requests.

You have two options for selecting a PSB within the session:

If you use an Access File, the adapter identifies the appropriate PSB when you reference a Master File in a request. The selection is automatic and transparent to you.

Access Files are members of a partitioned data set. The member name of an Access File within its partitioned data set must be the same as the member name of the corresponding Master File within its partitioned data set. At run time, the Access File data set is allocated to ddname ACCESS. (This allocation is optional if all PSB selection is dynamic.)

Note:


Top of page

x
Procedure: How to Select a PSB

You have two options for selecting a PSB within the session:

If you use an Access File, the adapter identifies the appropriate PSB when you reference a Master File in a request. The selection is automatic and transparent to you.

The following is a sample Access File PSB attribute to the DI21PART Master File. The Access File is member DI21PART in the Access File library:

PSB=FOCSD,$

Top of page

x
Syntax: How to Specify Access File Attributes

Each Access File will contain six or more attributes.

PSB=psbname,PCBNUMBER= pcb_number,PL1={NO|YES},WRITE={YES|NO},$
SEGNAME=segment_name, KEYTYPE=keytype,[NON_KEYED=NOMATCH,]$
ALTPCBNAME=index_name  , ALTPCBNUMBER=index_PCB_number,$

where:

psbname

Is the name of the PSB to use. If the PSB does not exist, the following message is (generated) displayed:

(EDA4261) PSB MEMBER NOT FOUND: psbname 
pcb_number

The position within the PSB that points to the database to be processed.

PL1

Indicates whether the PSB was generated with LANG=(PL/I, COBOL or Assembler). YES indicates PL/I. NO indicates COBOL or Assembler.

WRITE

YES allows SQL update for this database.

NO does not allow SQL update for this database and is the default.

segname_name

Are the segment names defined in the database definition.

keytype

Identifies the segment characteristics.

Possible values are:

S0 indicates that the segment is data sensitive and has no key.

S or S1 indicates that the segment is data sensitive and has a non-unique key.

S2 indicates that the segment is data sensitive and has a unique key.

SH or SH1 indicates that the segment is key sensitive and has a non-unique key.

SH2 indicates that the segment is key sensitive and has a unique key.

NON_KEYED=NOMATCH

Inserts records into a non-keyed child segment without first doing a MATCH on the segment. With this attribute, you can insert a segment instance containing data based on a Master File different from the one used to insert prior instances. Without this attribute, you would get a FOC200 message if the data being inserted did not conform to the original Master File, and the record would not be inserted.

index_name (Optional)

Identifies a secondary index database defined by the 'Procseq=' option within the PSB.

index_PCB_number (Optional)

Identifies the PCB number of the index database.

The member name of an Access File must be the same as the member name of the corresponding Master File.



Example: Sample Access File for DI21PART

The following is a sample Access File corresponding to the DI21PART Master File.

PSB=DI21PSB, WRITE=NO PCBNUMBER=2, PL1=NO,,$
SEGNAME=PARTROOT,  KEYTYPE=S2,$
SEGNAME=STANINFO,  KEYTYPE=S2,$
SEGNAME=STOKCOUNT, KEYTYPE=S2,$
SEGNAME=CYCCOUNT,  KEYTYPE=S2,$
SEGNAME=BAKORDR,   KEYTYPE=S2,$

Top of page

x
Describing Secondary Indexes in the Access File

Reference:

If you want to access a segment through a field in a segment that is not its sequence field (primary key), IMS provides the option of creating a secondary index on the field. In some situations, using a secondary index improves performance. The secondary index is itself a separate data source. Each of its records contains a value of the field to be indexed and a pointer to the target segment of the data source record containing that value.

When using a secondary index, IMS locates a record by first reading the index data source to retrieve the appropriate pointer and then using the pointer to read the data source.

If a PCB includes the parameter

PROCSEQ=indexDBDname

the named index is used as the main entry point into the data source.

One Master File and Access File can describe all primary and secondary indexes for a data source. Then, given a request, the adapter can examine all record selection tests to determine the best access path into the data source. The adapter can take advantage of this Auto Index Selection feature if:

In the Master File, prior to the secondary index definitions, you must describe the entire segment of the data source. Every field listed in the DBD is an IMS sequence field or search field, and each secondary index is based on one or more of these fields. You must assign each secondary index field its appropriate alias, as described in Field Attributes.

Note: IMS allows for system-defined sub-sequence fields to make an index unique. The Master File can completely ignore the presence and length of such fields.



x
Reference: Using an IMS Secondary Index

You can place information about secondary indexes in the Access File. No auxiliary virtual fields (that is, SKY groups/fields) are needed in the Master File.

Note: Existing .sky field suffix-based definitions are supported to ensure compatibility.

Two segments belonging to the same root path might be connected by secondary indexes:

One target segment may have many secondary indexes based on search fields from different source segments. The secondary index can be based on up to five base fields from the same segment.

Each PCB can be associated with only one index, primary or secondary. A secondary index is defined in the PROCSEQ parameter. When the synonym is created, a primary PCB number is chosen and placed in the PCBNUMBER attribute in the Access File PSB declaration. If the PSB contains several PCBs that define identical hierarchies, the primary PCB number is selected according to following rules:

Sequential numbers of all other PCBs of identical hierarchies associated with the same DBD are stored in the ALTPCBNUMBER attribute in the XDFLD Access File declaration.

Each DBD may be associated with any number of PCBs. Each PCB may have a PROCSEQ parameter to indicate an index key. The segment to which this key refers becomes the tree root segment. Therefore, it is possible to have different hierarchical structures associated with the same database. All identical hierarchies (the only difference is in the PROCSEQ key name) can be described by the same Master File. Different Master Files can be created for the various inverted hierarchies.

Access File XDFLD declarations are used to describe secondary indexes. There is a one-to-one relationship between XDFLD statements in the Access File and PROCSEQ parameters in the PCB.

There are two types of XDFLD declarations:

Secondary indexes are physically stored in separate index databases. These databases are referenced by the PROCSEQ and INDICES parameters. One index database can be used to store up to 16 secondary indexes. Such a database, and the related indexes, is referred to as a shared secondary index.



Example: Describing a Shared Secondary Index DBD

You can use information from a shared secondary index DBD to create XDFLD declarations. The following files illustrate the required entries.

DBD and PSB

      DBD NAME=DIX1DBD,ACCESS=(HIDAM,VSAM)
      DATASET  DD1=DIX1KAPL,DEVICE=3380
      SEGM     NAME=PARTROOT,PARENT=0,BYTES=50,PTR=T
      LCHILD   NAME=(SEG1,DIX1DBX0),PTR=INDX
      FIELD    NAME=(PARTKEY,SEQ,U),TYPE=C,BYTES=17,START=1
      FIELD    NAME=PARTFIL1,TYPE=C,BYTES=8,START=18
      FIELD    NAME=PARTNAME,TYPE=C,BYTES=23,START=27
      FIELD    NAME=/SX1
      LCHILD   NAME=(X1SEG,DIX1DBX1),PTR=INDX
      XDFLD    NAME=PARTNAMX,SRCH=PARTNAME,SUBSEQ=/SX1,NULLVAL=BLANK
*
      SEGM     NAME=STANINFO,PARENT=PARTROOT,BYTES=85
      FIELD    NAME=(STANKEY,SEQ),TYPE=C,BYTES=2,START=1
      FIELD    NAME=STANFIL1,TYPE=C,BYTES=16,START=3
      FIELD    NAME=STANTYPE,TYPE=C,BYTES=3,START=19
      FIELD    NAME=STANFIL2,TYPE=C,BYTES=26,START=22
      FIELD    NAME=STANASST,TYPE=C,BYTES=4,START=48
      FIELD    NAME=STANFIL3,TYPE=C,BYTES=2,START=52
      FIELD    NAME=STANVALU,TYPE=C,BYTES=2,START=54
*
      SEGM     NAME=STOKSTAT,PARENT=PARTROOT,BYTES=160
      FIELD    NAME=(STOCKEY,SEQ),TYPE=C,BYTES=16,START=1
      FIELD    NAME=STOKFIL1,TYPE=C,BYTES=4,START=17
      FIELD    NAME=STOKNUMS,TYPE=C,BYTES=9,START=21
      FIELD    NAME=STOKFIL2,TYPE=C,BYTES=20,START=30
      FIELD    NAME=STOKFREQ,TYPE=C,BYTES=6,START=50
      LCHILD   NAME=(X2SEG,DIX1DBX2),PTR=INDX
      XDFLD    NAME=CYCLNUMX,SRCH=CYCLNUMB,SEGMENT=CYCCOUNT,        X
               SUBSEQ=/SX1,NULLVAL=BLANK
*
      SEGM     NAME=CYCCOUNT,PARENT=STOKSTAT,BYTES=25
      FIELD    NAME=(CYCLKEY,SEQ),TYPE=C,BYTES=2,START=1
      FIELD    NAME=CYCLNUMB,TYPE=C,BYTES=8,START=3
      FIELD    NAME=CYCLFIL1,TYPE=C,BYTES=4,START=11
      FIELD    NAME=CYCLVALU,TYPE=C,BYTES=7,START=15
      FIELD    NAME=/SX1
*
      SEGM     NAME=BACKORDR,PARENT=STOKSTAT,BYTES=80
      FIELD    NAME=(BACKKEY,SEQ),TYPE=C,BYTES=10,START=1
      FIELD    NAME=BACKREFR,TYPE=C,BYTES=4,START=77
      DBDGEN
      FINISH
      END
DBPCB01 PCB TYPE=DB,DBDNAME=DIX1DBD,PROCOPT=A,KEYLEN=49
   SENSEG NAME=PARTROOT,PARENT=0
   SENSEG NAME=STANINFO,PARENT=PARTROOT
   SENSEG NAME=STOKSTAT,PARENT=PARTROOT
   SENSEG NAME=CYCCOUNT,PARENT=STOKSTAT
   SENSEG NAME=BACKORDR,PARENT=STOKSTAT
DBPCB02 PCB TYPE=DB,DBDNAME=DIX1DBD,PROCOPT=A,KEYLEN=49,               X
               PROCSEQ=DIX1DBX1
   SENSEG NAME=PARTROOT,PARENT=0
   SENSEG NAME=STANINFO,PARENT=PARTROOT
   SENSEG NAME=STOKSTAT,PARENT=PARTROOT
   SENSEG NAME=CYCCOUNT,PARENT=STOKSTAT
   SENSEG NAME=BACKORDR,PARENT=STOKSTAT
DBPCB03 PCB TYPE=DB,DBDNAME=DIX1DBD,PROCOPT=A,KEYLEN=49,               X
               PROCSEQ=DIX1DBX2
   SENSEG NAME=STOKSTAT,PARENT=0
   SENSEG NAME=CYCCOUNT,PARENT=STOKSTAT
   SENSEG NAME=BACKORDR,PARENT=STOKSTAT
   SENSEG NAME=PARTROOT,PARENT=STOKSTAT
   SENSEG NAME=STANINFO,PARENT=PARTROOT
  PSBGEN LANG=ASSEM,PSBNAME=DIX1PSB,CMPAT=YES
 END

Master File:

FILENAME=DIX_DIX1DBD, SUFFIX=IMS     , $
  SEGMENT=PARTROOT, SEGTYPE=S0, $
    FIELDNAME=PARTKEY, ALIAS=PARTKEY.KEY, USAGE=A17, ACTUAL=A17, $
    FIELDNAME=PARTFIL1, ALIAS=PARTFIL1.IMS, USAGE=A8, ACTUAL=A8, $
    FIELDNAME=FILL1, USAGE=A1, ACTUAL=A1, $
    FIELDNAME=PARTNAME, ALIAS=PARTNAME.IMS, USAGE=A23, ACTUAL=A23, $
    FIELDNAME=FILL2, USAGE=A1, ACTUAL=A1, $
  SEGMENT=STOKSTAT, SEGTYPE=S0, PARENT=PARTROOT, $
    FIELDNAME=STOCKEY, ALIAS=STOCKEY.KEY, USAGE=A16, ACTUAL=A16, $
    FIELDNAME=STOKFIL1, ALIAS=STOKFIL1.IMS, USAGE=A4, ACTUAL=A4, $
    FIELDNAME=STOKNUMS, ALIAS=STOKNUMS.IMS, USAGE=A9, ACTUAL=A9, $
    FIELDNAME=STOKFIL2, ALIAS=STOKFIL2.IMS, USAGE=A20, ACTUAL=A20,$
    FIELDNAME=STOKFREQ, ALIAS=STOKFREQ.IMS, USAGE=A6, ACTUAL=A6, $
    FIELDNAME=FILL1, USAGE=A105, ACTUAL=A105, $
  SEGMENT=CYCCOUNT, SEGTYPE=S0, PARENT=STOKSTAT, $
    FIELDNAME=CYCLKEY, ALIAS=CYCLKEY.KEY, USAGE=A2, ACTUAL=A2, $
    GROUP=CYCLNUMB, ALIAS=CYCLNUMB.IMS, USAGE=A8, ACTUAL=A8, $
     FIELDNAME=CNMB1, USAGE=A3, ACTUAL=A3, $
     FIELDNAME=CNMB2, USAGE=A3, ACTUAL=A3, $
     FIELDNAME=CNMB3, USAGE=A2, ACTUAL=A2, $
    FIELDNAME=CYCLFIL1, ALIAS=CYCLFIL1.IMS, USAGE=A4, ACTUAL=A4, $
    FIELDNAME=CYCLVALU, ALIAS=CYCLVALU.IMS, USAGE=A7, ACTUAL=A7, $
    FIELDNAME=FILL1, USAGE=A4, ACTUAL=A4, $

Access File:

PSB=DIX1PSB, WRITE=NO, PCBNUMBER=2, PL1=NO, $
  SEGNAME=PARTROOT, KEYTYPE=S2, $
   XDFLD=PARTNAMX, SRCH=PARTNAME, ALTPCBNUMBER=3, $
   XDFLD=PARTFILX, SRCH=PARTFIL1, ALTPCBNUMBER=4, $
  SEGNAME=STOKSTAT, KEYTYPE=S2, $
   XDFLD=CYCLNUMX, SRCH=CNMB1/CNMB3/CNMB2, BASESEG=CYCCOUNT, $
  SEGNAME=CYCCOUNT, KEYTYPE=S2, $


Example: Describing an Inverted Tree Structure

Master File:

FILENAME=DIX_DIX1DBD, SUFFIX=IMS , $
 SEGMENT=STOKSTAT, SEGTYPE=S0, $
 FIELDNAME=STOCKEY, ALIAS=STOCKEY.KEY, USAGE=A16, ACTUAL=A16, $
 FIELDNAME=STOKFIL1, ALIAS=STOKFIL1.IMS, USAGE=A4, ACTUAL=A4, $
 FIELDNAME=STOKNUMS, ALIAS=STOKNUMS.IMS, USAGE=A9, ACTUAL=A9, $
 FIELDNAME=STOKFIL2, ALIAS=STOKFIL2.IMS, USAGE=A20, ACTUAL=A20, $
 FIELDNAME=STOKFREQ, ALIAS=STOKFREQ.IMS, USAGE=A6, ACTUAL=A6, $
 FIELDNAME=FILL1, USAGE=A105, ACTUAL=A105, $
 SEGMENT=CYCCOUNT, SEGTYPE=S0, PARENT=STOKSTAT, $
 FIELDNAME=CYCLKEY, ALIAS=CYCLKEY.KEY, USAGE=A2, ACTUAL=A2, $
 GROUP=CYCLNUMB, ALIAS=CYCLNUMB.IMS, USAGE=A8, ACTUAL=A8, $
 FIELDNAME=CNMB1, USAGE=A3, ACTUAL=A3, $
 FIELDNAME=CNMB2, USAGE=A3, ACTUAL=A3, $
 FIELDNAME=CNMB3, USAGE=A2, ACTUAL=A2, $
 FIELDNAME=CYCLFIL1, ALIAS=CYCLFIL1.IMS, USAGE=A4, ACTUAL=A4, $
 FIELDNAME=CYCLVALU, ALIAS=CYCLVALU.IMS, USAGE=A7, ACTUAL=A7, $
 FIELDNAME=FILL1, USAGE=A4, ACTUAL=A4, $
 SEGMENT=PARTROOT, SEGTYPE=U, PARENT=STOKSTAT, $
 FIELDNAME=PARTKEY, ALIAS=PARTKEY.KEY, USAGE=A17, ACTUAL=A17, $
 FIELDNAME=PARTFIL1, ALIAS=PARTFIL1.IMS, USAGE=A8, ACTUAL=A8, $
 FIELDNAME=FILL1, USAGE=A1, ACTUAL=A1, $
 FIELDNAME=PARTNAME, ALIAS=PARTNAME.IMS, USAGE=A23, ACTUAL=A23, $
 FIELDNAME=FILL2, USAGE=A1, ACTUAL=A1, $

Access File:

PSB=DIX1PSB, WRITE=NO, PCBNUMBER=5, PL1=NO, $
 SEGNAME=STOKSTAT, KEYTYPE=S2, $
 XDFLD=CYCLNUMX, SRCH=CNMB1/CNMB3/CNMB2, BASESEG=CYCCOUNT,ALTPCBNUMBER=5, $
 XDFLD=CYCLVALX, SRCH=CYCLVALU, BASESEG=CYCCOUNT, ALTPCBNUMBER=6, $
 SEGNAME=CYCCOUNT, KEYTYPE=S2, $
 SEGNAME=PARTROOT, KEYTYPE=S2, $
 XDFLD=PARTNAMX, SRCH=PARTNAME, $
 XDFLD=PARTFILX, SRCH=PARTFIL1, $

This example uses four secondary indexes:

Definition description:

  1. Secondary index description associated with the target segment.
  2. XDFLD parameter defines the secondary index name used to build the SSA.
  3. BASESEG parameter defines the source segment name (if it is not the target segment).
  4. SRCH parameter defines the names of one or more (up to five) base fields, and their order in the secondary index.

Note: A qualified SSA is built for the target segment if at least one eligible screening condition is provided for the associated primary key, search field, or secondary key base source field.



Example: The PATDB01 Sample Database

The PATDB01 database has a primary index because it is a HIDAM database. It is also defined with three secondary indexes.

Five DBDs are associated with PATDB01: the DBD for the database, the DBD for the primary index, and one DBD for each of the three secondary indexes.

Database DBD for PATDB01

PATDB01 DBD:

  PRINT NOGEN
  DBD      NAME=PATDB01,ACCESS=(HIDAM,VSAM)
  DATASET  DD1=PATDB01,DEVICE=3380,BLOCK=4096,SCAN=5
*
  SEGM NAME=PATINFO,PTR=H,PARENT=0,BYTES=233
    FIELD NAME=(SSN,SEQ,U),BYTES=9,START=26,TYPE=C
    LCHILD NAME=(SEGIX,PATDBIX),PTR=INDX
    FIELD NAME=SEQFIELD,BYTES=6,START=1,TYPE=C
    FIELD NAME=REVSEQ,BYTES=6,START=7,TYPE=C
    FIELD NAME=SSNALPHA,BYTES=9,START=35,TYPE=C
    FIELD NAME=EMPID,BYTES=12,START=44,TYPE=C
    FIELD NAME=LNAME,BYTES=12,START=56,TYPE=C
    FIELD NAME=FNAME,BYTES=12,START=68,TYPE=C
    FIELD NAME=ADMDATE,BYTES=8,START=89,TYPE=C
    FIELD NAME=PATID,BYTES=10,START=176,TYPE=C
    FIELD NAME=/SX1
*
    LCHILD NAME=(SEGIX1,PATDBIX1),PTR=INDX
    XDFLD  NAME=IXNAME,SRCH=(LNAME,FNAME),                             X
               SUBSEQ=/SX1,NULLVAL=BLANK
*
    LCHILD NAME=(SEGIX2,PATDBIX2),PTR=INDX
    XDFLD  NAME=IXCOMP,SRCH=(SSNALPHA,EMPID,LNAME)
*
    LCHILD NAME=(SEGIX3,PATDBIX3),PTR=INDX
    XDFLD  NAME=IXADMD,SRCH=(ADMDATE),                                 X
               SUBSEQ=/SX1,NULLVAL=BLANK
*
  DBDGEN
  FINISH
  END

Primary Index DBD for PATDB01

PATDBIX DBD:

    PRINT NOGEN
    DBD      NAME=PATDBIX,ACCESS=INDEX
    DATASET  DD1=PATDBIX,DEVICE=3380
  *
    SEGM NAME=SEGIX,PARENT=0,BYTES=9
      FIELD NAME=(SSNIX,SEQ,U),BYTES=9,START=1,TYPE=C
      LCHILD NAME=(PATINFO,PATDB01),INDEX=SSN
    DBDGEN
    FINISH
    END

Secondary Index DBDs for PATDB01

PATDBIX1 DBD:

  PRINT NOGEN
  DBD      NAME=PATDBIX1,ACCESS=INDEX
  DATASET  DD1=PATDBIX1,DEVICE=3380
*
  SEGM NAME=SEGIX1,PARENT=0,BYTES=28
    FIELD NAME=(IXNAMEIX,SEQ,U),BYTES=28,START=1
    LCHILD NAME=(PATINFO,PATDB01),INDEX=IXNAME,PTR=SNGL
  DBDGEN
  FINISH
  END

PATDBIX2 DBD:

  PRINT NOGEN
  DBD      NAME=PATDBIX2,ACCESS=INDEX
  DATASET  DD1=PATDBIX2,DEVICE=3380
*
  SEGM NAME=SEGIX2,PARENT=0,BYTES=33
    FIELD NAME=(IXCOMPIX,SEQ,U),BYTES=33,START=1
    LCHILD NAME=(PATINFO,PATDB01),INDEX=IXCOMP,PTR=SNGL
  DBDGEN
  FINISH
  END

PATDBIX3 DBD:

  PRINT NOGEN
  DBD      NAME=PATDBIX3,ACCESS=INDEX
  DATASET  DD1=PATDBIX3,DEVICE=3380
*
  SEGM NAME=SEGIX3,PARENT=0,BYTES=12
    FIELD NAME=(IXADMDIX,SEQ,U),BYTES=12,START=1
    LCHILD NAME=(PATINFO,PATDB01),INDEX=IXADMD,PTR=SNGL
  DBDGEN
  FINISH
  END

PSB to Access PATDB01

PCB       TYPE=TP,MODIFY=YES,EXPRESS=YES
PCB       TYPE=TP,EXPRESS=NO,MODIFY=YES,SAMETRM=YES
*
PCB       TYPE=DB,DBDNAME=PATDB01,PROCOPT=GO,KEYLEN=9
SENSEG    NAME=PATINFO,PARENT=0
*
PCB       TYPE=DB,DBDNAME=PATDB01,PROCOPT=GO,KEYLEN=28,PROCSEQ=PATDBIX1
SENSEG    NAME=PATINFO,PARENT=0
*
PCB       TYPE=DB,DBDNAME=PATDB01,PROCOPT=GO,KEYLEN=33,PROCSEQ=PATDBIX2
SENSEG    NAME=PATINFO,PARENT=0
*
PCB       TYPE=DB,DBDNAME=PATDB01,PROCOPT=GO,KEYLEN=12,PROCSEQ=PATDBIX3
SENSEG    NAME=PATINFO,PARENT=0
*
PSBGEN    LANG=COBOL,PSBNAME=TSTPSB01,CMPAT=YES
END

This PSB is member TSTPSB01 in the PSB data set because PSBNAME=TSTPSB01.

PATDB01 Master File

FILENAME=PATDB01, SUFFIX=IMS     , $
  SEGMENT=PATINFO, SEGTYPE=S0, $
$  GROUP=PATDB01, ALIAS=E1, USAGE=A235, ACTUAL=A235, $
   GROUP=PATINFO, ALIAS=E2, USAGE=A235, ACTUAL=A235, $
    FIELDNAME=SEQFIELD, ALIAS=SEQFIELD.IMS, USAGE=A6, ACTUAL=A6, $
    FIELDNAME=REVSEQ, ALIAS=REVSEQ.IMS, USAGE=A6, ACTUAL=A6, $
    FIELDNAME=SALARY, ALIAS=E5, USAGE=A8, ACTUAL=A8, $
    FIELDNAME=OT_HR_PAY, ALIAS=E6, USAGE=A5, ACTUAL=A5, $
    FIELDNAME=SSN, ALIAS=SSN.KEY, USAGE=A9, ACTUAL=A9, $
    FIELDNAME=SSNALPHA, ALIAS=SSNALPHA.IMS, USAGE=A9, ACTUAL=A9, $
    FIELDNAME=EMPLOYEEID, ALIAS=EMPID.IMS, USAGE=A12, ACTUAL=A12, $
    FIELDNAME=LAST_NAME, ALIAS=LNAME.IMS, USAGE=A12, ACTUAL=A12, $
    FIELDNAME=FIRST_NAME, ALIAS=FNAME.IMS, USAGE=A12, ACTUAL=A12, $
    FIELDNAME=DATE_OF_BIRTH, ALIAS=E12, USAGE=A8, ACTUAL=A8, $
    FIELDNAME=RACE, ALIAS=E13, USAGE=A1, ACTUAL=A1, $
    FIELDNAME=ADMIT_DATE, ALIAS=ADMDATE.IMS, USAGE=A8, ACTUAL=A8, $
    FIELDNAME=ADMIT_TYPE, ALIAS=E15, USAGE=A1, ACTUAL=A1, $
    FIELDNAME=DISPOSITION, ALIAS=E16, USAGE=A2, ACTUAL=A2, $
    FIELDNAME=TRANSFER_DATE, ALIAS=E17, USAGE=A8, ACTUAL=A8, $
    FIELDNAME=ALLERGY1, ALIAS=E18, USAGE=A15, ACTUAL=A15, $
    FIELDNAME=ALLERGY2, ALIAS=E19, USAGE=A15, ACTUAL=A15, $
    FIELDNAME=ALLERGY3, ALIAS=E20, USAGE=A15, ACTUAL=A15, $
    FIELDNAME=ALLERGY4, ALIAS=E21, USAGE=A15, ACTUAL=A15, $
    FIELDNAME=HOUSING, ALIAS=E22, USAGE=A3, ACTUAL=A3, $
    FIELDNAME=RPR, ALIAS=E23, USAGE=A1, ACTUAL=A1, $
    FIELDNAME=URIN, ALIAS=E24, USAGE=A1, ACTUAL=A1, $
    FIELDNAME=PRACTITIONAR, ALIAS=E25, USAGE=A2, ACTUAL=A2, $
    FIELDNAME=SHIFT, ALIAS=E26, USAGE=A1, ACTUAL=A1, $
    FIELDNAME=PATINET_ID, ALIAS=PATID.IMS, USAGE=A10, ACTUAL=A10, $
    FIELDNAME=WHO_ADDED, ALIAS=E28, USAGE=A10, ACTUAL=A10, $
    FIELDNAME=DATE_ADDED, ALIAS=E29, USAGE=A8, ACTUAL=A8, $
    FIELDNAME=WHO_EDITED, ALIAS=E30, USAGE=A10, ACTUAL=A10, $
    FIELDNAME=DATE_EDITED, ALIAS=E31, USAGE=A8, ACTUAL=A8, $
    FIELDNAME=STATION_ID, ALIAS=E32, USAGE=A12, ACTUAL=A12, $
    FIELDNAME=DIABETIC, ALIAS=E33, USAGE=A1, ACTUAL=A1, $
    FIELDNAME=DIALYSIS, ALIAS=E34, USAGE=A1, ACTUAL=A1, $
   GROUP=IXNAME, ALIAS=IXNAME.SKY, USAGE=A24, ACTUAL=A24, $
    FIELDNAME=IX_LNAME, ALIAS=LAST_NAME, USAGE=A12, ACTUAL=A12, $
    FIELDNAME=IX_FNAME, ALIAS=FIRST_NAME, USAGE=A12, ACTUAL=A12, $
   GROUP=IXCOMP, ALIAS=IXCOMP.SKY, USAGE=A33, ACTUAL=A33, $
    FIELDNAME=IX_SSNALPHA, ALIAS=SSNALPHA, USAGE=A9, ACTUAL=A9, $
    FIELDNAME=IX_EMPID, ALIAS=EMPLOYEEID, USAGE=A12, ACTUAL=A12, $
    FIELDNAME=IX_LNAME1, ALIAS=LAST_NAME, USAGE=A12, ACTUAL=A12, $
   GROUP=IXADMD, ALIAS=IXADMD.SKY, USAGE=A8, ACTUAL=A8, $
    FIELDNAME=IX_ADMDATE, ALIAS=ADMIT_DATE, USAGE=A8, ACTUAL=A8, $
  SEGMENT=SEG2, SEGTYPE=U, PARENT=PATINFO, OCCURS=1, POSITION=SSNALPHA, $
   GROUP=SSNN, ALIAS=E35, USAGE=A9, ACTUAL=A9, $
   GROUP=SSNUMERIC, ALIAS=E36, USAGE=A9, ACTUAL=A9, $
    FIELDNAME=N1_3, ALIAS=E37, USAGE=A3, ACTUAL=A3, $
    FIELDNAME=N4_5, ALIAS=E38, USAGE=A2, ACTUAL=A2, $
    FIELDNAME=N6_9, ALIAS=E39, USAGE=A4, ACTUAL=A4, $

PATDB01 Access File

PSB=PATDBPSB, WRITE=NO, PCBNUMBER=4, PL1=NO, $
  SEGNAME=PATINFO, KEYTYPE=S0, $
      XDFLD=IXNAME, SRCH=LAST_NAME/FIRST_NAME, ALTPCBNUMBER=5, $
      XDFLD=IXCOMP, SRCH=SSNALPHA/EMPLOYEEID/LAST_NAME, ALTPCBNUMBER=6, $
      XDFLD=IXADMD, SRCH=ADMIT_DATE, ALTPCBNUMBER=7, $

Top of page

x
Describing a Partition to the Server

How to:

IMS limits the size of its data sources. A site that needs a larger data source may be able to create several smaller data sources by partitioning the large data source based on root key values.

Using extended Access File attributes, you can describe a partition to the server, describe how to concatenate the parts, and assign a name to the concatenated PCB. When you issue a request, you can report from the concatenated PCB name or from any of the individual partitions, depending on the file name you reference in the request.



x
Syntax: How to Describe a Partition in the Access File

A partition assigns each record to a specific data source depending on its root key value. The first partition contains records with the lowest key values. The next partition contains records with higher key values, and so on. The last partition contains records with the highest key values. Each partition is a separate IMS data source and, therefore, has a separate PCB in the PSB.

To describe the key range in each partition to the server, add the LOWVALUE and HIGHVALUE attributes to the appropriate PCB records in the Access File.

PCBNAME=mfdname,PCBTYPE=DB,LOWVALUE={value1|0},HIGHVALUE={value2|FF},$

where:

mfdname

Is the name of the Master File for one partition of the large data source. Since the partition is a separate data source with its own DBD, it needs its own PCB and Master File.

value1

Is the lowest key value, in alphanumeric format, in the partition accessed with Master File mfdname. 0 is the default value.

value2

Is the highest key value, in alphanumeric format, in the partition accessed with Master File mfdname. Hexadecimal FF is the default value.

Note:

If the partitioning field is a group composed of multiple subfields, each subfield value must be alphanumeric, and you must specify the concatenated subfield values in the LOWVALUE and HIGHVALUE attributes. For example, if the root key low value is composed of F1=AAAA, F2=88, and F3=BBB, then LOWVALUE=AAAA88BBB.


Top of page

x
Describing a Concatenated PCB in the Access File

In this section:

How to:

In an Access File, you can concatenate individual PCBs by assigning a name to the concatenation and issuing a request against it.

The PCBs that you concatenate do not have to be partitioned, that is, their Access File records do not have to include the LOWVALUE and HIGHVALUE attributes. However, if they do include the partitioning information, the adapter can examine the request and determine which PCBs satisfy the request. Without the partitioning information, the adapter must access every PCB that participates in the concatenation.



x
Syntax: How to Describe a Concatenated PCB in the Access File

The format of the Access File for the Adapter for IMS to provide extended support for concatenated databases is as follows:

  1. The CONCATPCB statements provide the PCB number and the low and high value range for the root segment key.

    For example:

    CONCATPCB=4,LOWVALUE=0,HIGHVALUE=0, $
    CONCATPCB=6,LOWVALUE=1,HIGHVALUE=1, $
    .................................................................
    CONCATPCB=12,LOWVALUE=9,HIGHVALUE=9, $
  2. The CONCPOSITION statement provides root segment key substring information.The substring value is compared with the key ranges defined in the CONCATPCB statements. Positions in the key are counted from 0 for the substring operation.

The key value is converted to alphanumeric format prior to the substring operation.The key format is taken from the ACTUAL description. A Packed or Zoned format number is processed as an unsigned one.

Conversion rules for the Packed format:

Conversion rules for the Integer format:

For example:

CONCPOSITION=1,LENGTH=1, $


Example: Describing a HDAM Concatenated PCB
FILENAME=HDAM0, SUFFIX=IMS     , $
  SEGMENT=LANGUAGE, SEGTYPE=S0, $
    FIELDNAME=EMPL6, ALIAS=EMPL6.HKY, USAGE=P8,  ACTUAL=P4, $
    FIELDNAME=LANG6,  ALIAS=LANG6.IMS, USAGE=A15, ACTUAL=A15, $
PSB=PIHDPSB,PCBNUMBER= 4,PL1=NO,WRITE=NO,$
SEGNAME=LANGUAGE, KEYTYPE=S1  ,$
CONCATPCB=4,LOWVALUE=1,HIGHVALUE=1, $
CONCATPCB=6,LOWVALUE=2,HIGHVALUE=2, $
CONCATPCB=8,LOWVALUE=3,HIGHVALUE=3, $
CONCPOSITION=4,LENGTH=1, $

Note: PCBNUMBER in the PSB statement refers to the PCB associated with the root segment.

In the following request, we associate the 5th digit in the key (offset 4 in the key buffer) with the PCB to schedule.:

TABLE FILE HDAM0
PRINT *
WHERE EMPL6 EQ 9336
END

PCB number 8 will be used for the numeric qualifier 9336. The extracted value is 3 (since packed number 9336 is unpacked to the 7 bytes buffer and the result value is 0009336).



Example: Describing a HIDAM Concatenated PCB

EMPDB01, EMPDB02, and EMPDB03 are HIDAM data sources that illustrate partitioning and concatenation of PCBs in the Access File. The following topics illustrate:



x
EMPDB01 DBD

Data source DBD:

PRINT NOGEN
DBD      NAME=EMPDB01,ACCESS=(HIDAM,VSAM)
DATASET  DD1=EMPDB01,DEVICE=3380,BLOCK=4096,SCAN=5
  *
SEGM NAME=EMPINFO,PTR=H,PARENT=0,BYTES=212
  FIELD NAME=(SSNALPHA,SEQ,U),BYTES=9,START=18,TYPE=C
  LCHILD NAME=(SEGIX1,EMPDBIX1),PTR=INDX
  FIELD NAME=SEQFIELD,BYTES=2,START=1,TYPE=P
  FIELD NAME=REVSEQ,BYTES=6,START=3,TYPE=C
  FIELD NAME=SSN,BYTES=3,START=15,TYPE=P
  FIELD NAME=EMPID,BYTES=12,START=27,TYPE=C
  FIELD NAME=LNAME,BYTES=12,START=39,TYPE=C
  FIELD NAME=FNAME,BYTES=12,START=51,TYPE=C
  FIELD NAME=ADMDATE,BYTES=8,START=72,TYPE=C
  *
DBDGEN
FINISH
END

Index DBD:

PRINT NOGEN
DBD      NAME=EMPDBIX1,ACCESS=INDEX
DATASET  DD1=EMPDBIX1,DEVICE=3380
  *
SEGM NAME=SEGIX1,PARENT=0,BYTES=9
  FIELD NAME=(SSNIX,SEQ,U),BYTES=9,START=1
  LCHILD NAME=(EMPINFO,EMPDB01),INDEX=SSNALPHA
DBDGEN
FINISH
END


x
EMPDB02 DBD

Database DBD:

PRINT NOGEN
DBD      NAME=EMPDB02,ACCESS=(HIDAM,VSAM)
DATASET  DD1=EMPDB02,DEVICE=3380,BLOCK=4096,SCAN=5
  *
SEGM NAME=EMPINFO,PTR=H,PARENT=0,BYTES=212
  FIELD NAME=(SSNALPHA,SEQ,U),BYTES=9,START=18,TYPE=C
  LCHILD NAME=(SEGIX2,EMPDBIX2),PTR=INDX
  FIELD NAME=SEQFIELD,BYTES=2,START=1,TYPE=P
  FIELD NAME=REVSEQ,BYTES=6,START=3,TYPE=C
  FIELD NAME=SSN,BYTES=3,START=15,TYPE=P
  FIELD NAME=EMPID,BYTES=12,START=27,TYPE=C
  FIELD NAME=LNAME,BYTES=12,START=39,TYPE=C
  FIELD NAME=FNAME,BYTES=12,START=51,TYPE=C
  FIELD NAME=ADMDATE,BYTES=8,START=72,TYPE=C
  *
DBDGEN
FINISH
END

Index DBD:

PRINT NOGEN
DBD      NAME=EMPDBIX2,ACCESS=INDEX
DATASET  DD1=EMPDBIX2,DEVICE=3380
  *
SEGM NAME=SEGIX2,PARENT=0,BYTES=9
  FIELD NAME=(SSNIX,SEQ,U),BYTES=9,START=1
  LCHILD NAME=(EMPINFO,EMPDB02),INDEX=SSNALPHA
DBDGEN
FINISH
END


x
EMPDB03 DBD

Database DBD:

PRINT NOGEN
DBD      NAME=EMPDB03,ACCESS=(HIDAM,VSAM)
DATASET  DD1=EMPDB03,DEVICE=3380,BLOCK=4096,SCAN=5
  *
SEGM NAME=EMPINFO,PTR=H,PARENT=0,BYTES=212
  FIELD NAME=(SSNALPHA,SEQ,U),BYTES=9,START=18,TYPE=C
  LCHILD NAME=(SEGIX3,EMPDBIX3),PTR=INDX
  FIELD NAME=SEQFIELD,BYTES=2,START=1,TYPE=P
  FIELD NAME=REVSEQ,BYTES=6,START=3,TYPE=C
  FIELD NAME=SSN,BYTES=3,START=15,TYPE=P
  FIELD NAME=EMPID,BYTES=12,START=27,TYPE=C
  FIELD NAME=LNAME,BYTES=12,START=39,TYPE=C
  FIELD NAME=FNAME,BYTES=12,START=51,TYPE=C
  FIELD NAME=ADMDATE,BYTES=8,START=72,TYPE=C
  *
DBDGEN
FINISH
END

Index DBD:

PRINT NOGEN
DBD      NAME=EMPDBIX3,ACCESS=INDEX
DATASET  DD1=EMPDBIX3,DEVICE=3380
  *
SEGM NAME=SEGIX3,PARENT=0,BYTES=9
  FIELD NAME=(SSNIX,SEQ,U),BYTES=9,START=1
  LCHILD NAME=(EMPINFO,EMPDB03),INDEX=SSNALPHA
DBDGEN
FINISH
END


x
PSB to Access the EMPDB Data Sources
PCB       TYPE=TP,MODIFY=YES,EXPRESS=YES
PCB       TYPE=TP,EXPRESS=NO,MODIFY=YES,SAMETRM=YES
PCB       TYPE=DB,DBDNAME=EMPDB01,PROCOPT=GO,KEYLEN=9
SENSEG    NAME=EMPINFO,PARENT=0
PCB       TYPE=DB,DBDNAME=EMPDB02,PROCOPT=GO,KEYLEN=9
SENSEG    NAME=EMPINFO,PARENT=0
PCB       TYPE=DB,DBDNAME=EMPDB03,PROCOPT=GO,KEYLEN=9
SENSEG    NAME=EMPINFO,PARENT=0
PSBGEN LANG=COBOL,PSBNAME=EMPPSBJ,CMPAT=YES
END


x
Master Files to Access the EMPDB Data Sources

The EMPDB01, EMPDB02, and EMPDB03 Master Files each correspond to a PCB for one individual partition of the data source. The EMPDBJ Master File corresponds to the concatenation of the three partitions.



x
EMPDB01 Master File
FILE=EMPDB01,SUFFIX=IMS,$
SEGNAME=EMPINFO,PARENT=,SEGTYPE=S0,$
FIELD=SEQFIELD      ,ALIAS=SEQFIELD.IMS    ,USAGE=P6   ,ACTUAL=P2 ,$
FIELD=REVSEQ        ,ALIAS=REVSEQ.IMS      ,USAGE=A6   ,ACTUAL=A6 ,$
FIELD=SALARY        ,ALIAS=                ,USAGE=P8   ,ACTUAL=P4 ,$
FIELD=OT_HR_PAY     ,ALIAS=                ,USAGE=P5   ,ACTUAL=P2 ,$
FIELD=SSN           ,ALIAS=SSN.IMS         ,USAGE=P9   ,ACTUAL=P3 ,$
FIELD=SSNALPHA      ,ALIAS=SSNALPHA.KEY    ,USAGE=A9   ,ACTUAL=A9 ,$
FIELD=EMPID         ,ALIAS=EMPID.IMS       ,USAGE=A12  ,ACTUAL=A12,$
FIELD=ELAST_NAME    ,ALIAS=ELNAME.IMS      ,USAGE=A12  ,ACTUAL=A12,$
FIELD=EFIRST_NAME   ,ALIAS=EFNAME.IMS      ,USAGE=A12  ,ACTUAL=A12,$
FIELD=DATE_OF_BIRTH ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=RACE          ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=ADMIT_DATE    ,ALIAS=ADMDATE.IMS     ,USAGE=A08  ,ACTUAL=A08,$
FIELD=ADMIT_TYPE    ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=DISPOSITION   ,ALIAS=                ,USAGE=A02  ,ACTUAL=A02,$
FIELD=TRANSFER_DATE ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=ALLERGY1      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY2      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY3      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY4      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=HOUSING       ,ALIAS=                ,USAGE=A03  ,ACTUAL=A03,$
FIELD=RPR           ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=URIN          ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=PRACTITIONAR  ,ALIAS=                ,USAGE=A02  ,ACTUAL=A02,$
FIELD=SHIFT         ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=PATINET_ID    ,ALIAS=                ,USAGE=P12  ,ACTUAL=P4 ,$
FIELD=WHO_ADDED     ,ALIAS=                ,USAGE=A10  ,ACTUAL=A10,$
FIELD=DATE_ADDED    ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=WHO_EDITED    ,ALIAS=                ,USAGE=A10  ,ACTUAL=A10,$
FIELD=DATE_EDITED   ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=STATION_ID    ,ALIAS=                ,USAGE=A12  ,ACTUAL=A12,$
FIELD=DIABETIC      ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=DIALYSIS      ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$


x
EMPDB02 Master File
FILE=EMPDB02,SUFFIX=IMS,$
SEGNAME=EMPINFO,PARENT=,SEGTYPE=S0,$
FIELD=SEQFIELD      ,ALIAS=SEQFIELD.IMS    ,USAGE=P6   ,ACTUAL=P2 ,$
FIELD=REVSEQ        ,ALIAS=REVSEQ.IMS      ,USAGE=A6   ,ACTUAL=A6 ,$
FIELD=SALARY        ,ALIAS=                ,USAGE=P8   ,ACTUAL=P4 ,$
FIELD=OT_HR_PAY     ,ALIAS=                ,USAGE=P5   ,ACTUAL=P2 ,$
FIELD=SSN           ,ALIAS=SSN.IMS         ,USAGE=P9   ,ACTUAL=P3 ,$
FIELD=SSNALPHA      ,ALIAS=SSNALPHA.KEY    ,USAGE=A9   ,ACTUAL=A9 ,$
FIELD=EMPID         ,ALIAS=EMPID.IMS       ,USAGE=A12  ,ACTUAL=A12,$
FIELD=ELAST_NAME    ,ALIAS=ELNAME.IMS      ,USAGE=A12  ,ACTUAL=A12,$
FIELD=EFIRST_NAME   ,ALIAS=EFNAME.IMS      ,USAGE=A12  ,ACTUAL=A12,$
FIELD=DATE_OF_BIRTH ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=RACE          ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=ADMIT_DATE    ,ALIAS=ADMDATE.IMS     ,USAGE=A08  ,ACTUAL=A08,$
FIELD=ADMIT_TYPE    ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=DISPOSITION   ,ALIAS=                ,USAGE=A02  ,ACTUAL=A02,$
FIELD=TRANSFER_DATE ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=ALLERGY1      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY2      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY3      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY4      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=HOUSING       ,ALIAS=                ,USAGE=A03  ,ACTUAL=A03,$
FIELD=RPR           ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=URIN          ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=PRACTITIONAR  ,ALIAS=                ,USAGE=A02  ,ACTUAL=A02,$
FIELD=SHIFT         ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=PATINET_ID    ,ALIAS=                ,USAGE=P12  ,ACTUAL=P4 ,$
FIELD=WHO_ADDED     ,ALIAS=                ,USAGE=A10  ,ACTUAL=A10,$
FIELD=DATE_ADDED    ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=WHO_EDITED    ,ALIAS=                ,USAGE=A10  ,ACTUAL=A10,$
FIELD=DATE_EDITED   ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=STATION_ID    ,ALIAS=                ,USAGE=A12  ,ACTUAL=A12,$
FIELD=DIABETIC      ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=DIALYSIS      ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$


x
EMPDB03 Master File
FILE=EMPDB03,SUFFIX=IMS,$
SEGNAME=EMPINFO,PARENT=,SEGTYPE=S0,$
FIELD=SEQFIELD      ,ALIAS=SEQFIELD.IMS    ,USAGE=P6   ,ACTUAL=P2 ,$
FIELD=REVSEQ        ,ALIAS=REVSEQ.IMS      ,USAGE=A6   ,ACTUAL=A6 ,$
FIELD=SALARY        ,ALIAS=                ,USAGE=P8   ,ACTUAL=P4 ,$
FIELD=OT_HR_PAY     ,ALIAS=                ,USAGE=P5   ,ACTUAL=P2 ,$
FIELD=SSN           ,ALIAS=SSN.IMS         ,USAGE=P9   ,ACTUAL=P3 ,$
FIELD=SSNALPHA      ,ALIAS=SSNALPHA.KEY    ,USAGE=A9   ,ACTUAL=A9 ,$
FIELD=EMPID         ,ALIAS=EMPID.IMS       ,USAGE=A12  ,ACTUAL=A12,$
FIELD=ELAST_NAME    ,ALIAS=ELNAME.IMS      ,USAGE=A12  ,ACTUAL=A12,$
FIELD=EFIRST_NAME   ,ALIAS=EFNAME.IMS      ,USAGE=A12  ,ACTUAL=A12,$
FIELD=DATE_OF_BIRTH ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=RACE          ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=ADMIT_DATE    ,ALIAS=ADMDATE.IMS     ,USAGE=A08  ,ACTUAL=A08,$
FIELD=ADMIT_TYPE    ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=DISPOSITION   ,ALIAS=                ,USAGE=A02  ,ACTUAL=A02,$
FIELD=TRANSFER_DATE ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=ALLERGY1      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY2      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY3      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY4      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=HOUSING       ,ALIAS=                ,USAGE=A03  ,ACTUAL=A03,$
FIELD=RPR           ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=URIN          ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=PRACTITIONAR  ,ALIAS=                ,USAGE=A02  ,ACTUAL=A02,$
FIELD=SHIFT         ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=PATINET_ID    ,ALIAS=                ,USAGE=P12  ,ACTUAL=P4 ,$
FIELD=WHO_ADDED     ,ALIAS=                ,USAGE=A10  ,ACTUAL=A10,$
FIELD=DATE_ADDED    ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=WHO_EDITED    ,ALIAS=                ,USAGE=A10  ,ACTUAL=A10,$
FIELD=DATE_EDITED   ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=STATION_ID    ,ALIAS=                ,USAGE=A12  ,ACTUAL=A12,$
FIELD=DIABETIC      ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=DIALYSIS      ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$


x
EMPDBJ Master File
FILE=EMPDBJ,SUFFIX=IMS,$
SEGNAME=EMPINFO,PARENT=,SEGTYPE=S0,$
FIELD=SEQFIELD      ,ALIAS=SEQFIELD.IMS    ,USAGE=P6   ,ACTUAL=P2 ,$
FIELD=REVSEQ        ,ALIAS=REVSEQ.IMS      ,USAGE=A6   ,ACTUAL=A6 ,$
FIELD=SALARY        ,ALIAS=                ,USAGE=P8   ,ACTUAL=P4 ,$
FIELD=OT_HR_PAY     ,ALIAS=                ,USAGE=P5   ,ACTUAL=P2 ,$
FIELD=SSN           ,ALIAS=SSN.IMS         ,USAGE=P9   ,ACTUAL=P3 ,$
FIELD=SSNALPHA      ,ALIAS=SSNALPHA.KEY    ,USAGE=A9   ,ACTUAL=A9 ,$
FIELD=EMPID         ,ALIAS=EMPID.IMS       ,USAGE=A12  ,ACTUAL=A12,$
FIELD=ELAST_NAME    ,ALIAS=ELNAME.IMS      ,USAGE=A12  ,ACTUAL=A12,$
FIELD=EFIRST_NAME   ,ALIAS=EFNAME.IMS      ,USAGE=A12  ,ACTUAL=A12,$
FIELD=DATE_OF_BIRTH ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=RACE          ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=ADMIT_DATE    ,ALIAS=ADMDATE.IMS     ,USAGE=A08  ,ACTUAL=A08,$
FIELD=ADMIT_TYPE    ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=DISPOSITION   ,ALIAS=                ,USAGE=A02  ,ACTUAL=A02,$
FIELD=TRANSFER_DATE ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=ALLERGY1      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY2      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY3      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=ALLERGY4      ,ALIAS=                ,USAGE=A15  ,ACTUAL=A15,$
FIELD=HOUSING       ,ALIAS=                ,USAGE=A03  ,ACTUAL=A03,$
FIELD=RPR           ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=URIN          ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=PRACTITIONAR  ,ALIAS=                ,USAGE=A02  ,ACTUAL=A02,$
FIELD=SHIFT         ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=PATINET_ID    ,ALIAS=                ,USAGE=P12  ,ACTUAL=P4 ,$
FIELD=WHO_ADDED     ,ALIAS=                ,USAGE=A10  ,ACTUAL=A10,$
FIELD=DATE_ADDED    ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=WHO_EDITED    ,ALIAS=                ,USAGE=A10  ,ACTUAL=A10,$
FIELD=DATE_EDITED   ,ALIAS=                ,USAGE=A08  ,ACTUAL=A08,$
FIELD=STATION_ID    ,ALIAS=                ,USAGE=A12  ,ACTUAL=A12,$
FIELD=DIABETIC      ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$
FIELD=DIALYSIS      ,ALIAS=                ,USAGE=A01  ,ACTUAL=A01,$


Example: Concatenating Partitioned PCBs

The following example illustrates how to concatenate partitioned PCBs:

PSB=EMPPSBJ, WRITE=NO, PCBNUMBER=4, PL1=NO, $
 SEGNAME=EMPINFO, KEYTYPE=S2, $
PSB=EMPPSBJ, WRITE=NO, PCBNUMBER=5, PL1=NO, $
PSB=EMPPSBJ, WRITE=NO, PCBNUMBER=6, PL1=NO, $
CONCATPCB=4, LOWVALUE=000000001, HIGHVALUE=000001667, $
CONCATPCB=5, LOWVALUE=000001668, HIGHVALUE=000003334, $
CONCATPCB=6, LOWVALUE=000003335, HIGHVALUE=000005000, $

Consider the following request. (The key field is named SSNALPHA):

SELECT SSNALPHA ...
FROM EMPDBJ
WHERE SSNALPHA = '000001775';

The adapter satisfies the request using the EMPDB02 PCB only. If the WHERE clause had requested key values less than 000001775 (rather than equal to 000001775), the adapter would have used the EMPDB01 and EMPDB02 PCBs.

Note:


Information Builders