Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Additional measures for CALL DML programs with BCALLSI

The BCALLSI utility routine must be executed if you have CALL-DML programs or work with DMLTEST.

BCALLSI generates the SSITAB module (SUBSCHEMA INFORMATION TABLE) with the subschema information needed by a CALL-DML program at program runtime.

At startup BCALLSI takes into account any assigned UDS/SQL pubset declaration (see the "Database Operation" manual, Pubset declaration job variable). Faulty assignment leads to the program aborting.

Providing subschema information

In order to execute DML statements, the DBH requires information on the subschema being used. The following information is available in the COSSD as stored by the DDL compiler:

  • the transformed subschema

  • the so-called CHECK TABLE

This information is gathered for the DBH in a number of different ways.

  • In the case of COBOL DML programs, the COBOL compiler needs the subschema information when compiling the application program.

  • For CALL DML programs, the subschema information is required at program runtime. Since access to the COSSD would be too time-consuming at runtime, you must generate the SSITAB module with BCALLSI beforehand. BCALLSI uses the information of the COSSD for this purpose. At program runtime, the SSITAB module is loaded from the module library by the CALL DML connection module. Thus, in the case of CALL DML programs, a BCALLSI run must be added between compilation of the Subschema DDL and the program run.

Editing special subschemas in the “old” format

In addition to the standard format in which the transformed subschema and the associated check table exist, the "old" format up to and including UDS/SQL V1.2 with 1-byte long reference numbers for record types and sets (see Table12 of "Compiling the Schema DDL") is still accepted by BCALLSI. The "old" format is required for subschemas which are processed in KDBS applications. A COSSD can contain transformed subschemas in both the standard format and in the "old" format. From a transformed subschema in the "old" format BCALLSI generates an SSITAB module in UDS/SQL V1.2 format, which is still supported by the current CALL-DML converter.

BCALLSI functions

BCALLSI can access a COSSD of UDS/SQL > V1.2 as well as a COSSD of UDS/SQL V1.2 or UDS/SQL V1.1.

BCALLSI performs the following functions:

  • Compilation of the transformed subschema in realm, set, record and item tables

  • Printing out the transformed subschema

  • Checking the realm, set, record and item names for unique identification by means of the first eight or thirty characters. If the names are not unique, a warning is appended to the printout of the transformed subschema.

  • Copying the check table from the COSSD in order to complete the SSITAB.

  • Outputting the SSITAB module to the EAM file under the name subschema##, where subschema comprises the first six characters of the full subschema name.

The SSITAB module generated must then be entered in a module library using the BS2000 utility routine LMS. The name of the library is freely selectable. The DBH gives first priority to loading SSITAB modules from a library assigned with the link name $UDSSSI. If the SSITAB modules are stored in more than one library, e.g. in a separate library for each database, other libraries can be assigned with the link names BLSLIB00 to BLSLIB99 (see the section “DBH start commands” in the "Database Operation" manual and the section "Compiling, linking and loading UDS/SQL-TIAM appliction programs" in the "Application Programming" manual).

The first six characters of the subschema names must ensure unique identification, since the name of the SSITAB module is formed from the first six characters plus ’##’.

System environment for BCALLSI

Figure 15: System environment of BCALLSI 

Statements for BCALLSI

Statement                                                       

Default
value

Meaning

{SCHEMA | S}=schema-name,
  {SUBSCHEMA | SS}=subschema-name

-

Mandatory;
Assigns the name of the schema and subschema to BCALLSI:

schema-name
Name of the schema assigned in the Schema DDL.

subschema-name
Name of the subschema assigned in the Subschema DDL.

[{,MESSAGE | ,M}=
  {*ALL|N[O-AMBIGUITY-8]}]

*ALL

*ALL
All cases of ambiguity, including those in the first 8 characters, are output individually to SYSLST.

NO-AMBIGUITY-8
Cases of ambiguity in the first 8 characters of a name, are not output individually to SYSLST.

Table 17: Statements for BCALLSI

Command sequence for starting BCALLSI

It is assumed for the command sequence described here that UDS/SQL was installed with IMON (see section "START commands for the UDS/SQL programs").

01 /DELETE-SYSTEM-FILE FILE-NAME=*OMF
02 /ADD-FILE-LINK LINK-NAME=DATABASE,FILE-NAME=dbname.DBDIR
03 /SELECT-PRODUCT-VERSION PRODUCT-NAME=UDS-SQL,VERSION=version,SCOPE=*TASK
04 /START-UDS-BCALLSI
05 bcallsi-statement

03

The specified version of BCALLSI is selected.
It is generally recommended that you specify the version since it is possible for several UDS/SQL versions to be installed in parallel.

04

The UDS/SQL utility routine can also be started with the alias BCALLSI.

05

There is no END statement for BCALLSI!

Entering the SSITAB module in the module library

01 /START-LMS
02 //OPEN-LIB LIB=modlib,MODE=*UPDATE
03 //ADD-ELEMENT FROM-FILE=*OMF,TO-ELEMENT=*LIBRARY-ELEMENT(TYPE=R)
04 //END

Example

/DELETE-SYSTEM-FILE FILE-NAME=*OMF
/ADD-FILE-LINK LINK-NAME=DATABASE,FILE-NAME=SHIPPING.DBDIR
/SELECT-PRODUCT-VERSION PRODUCT-NAME=UDS-SQL,    VERSION=02.9B00  
/START-UDS-BCALLSI
***** START        BCALLSI      (UDS/SQL  V2.9  1801 )    2019-01-29   09:27:25
SCHEMA=MAIL-ORDERS,SUBSCHEMA=ADMIN,MESSAGE=*ALL  
SSITAB ADMIN## WRITTEN TO EAM-OMF
 
***** DIAGNOSTIC SUMMARY OF BCALLSI 
  
              NO WARNINGS 
              NO ERRORS  
              NO SYSTEM-ERRORS
   
***** END OF DIAGNOSTIC SUMMARY 
***** NR OF DATABASE ACCESSES  :            0   
***** NORMAL END   BCALLSI      (UDS/SQL  V2.9  1801 )    2019-01-29   09:27:25
/MODIFY-JOB-SWITCHES ON=(1,4)
/START-LMS
//MOD-LOG-PAR LOG=*MAX
//OPEN-LIB LIB=LMS.SSITAB,MODE=*UPD(STATE=*ANY)
//ADD-ELEMENT FROM-FILE=*OMF,TO-ELEM=*LIB(TYPE=R),WRITE-MODE=*ANY
INPUT  OMF
OUTPUT LIBRARY= :IUDS:$XXXXXXXX.LMS.SSITAB 
        ADD ADMIN## AS (R)ADMIN##/@(0001)/2019-01-29  
  
//SHOW-ELEM-ATTR ELEM=*LIB-ELEM()
  
INPUT  LIBRARY= :IUDS:$XXXXXXXX.LMS.SSITAB
TYP NAME     VER (VAR#) DATE         NAME     VER (VAR#) DATE
(R) ADMIN##  @   (0002) 2019-01-29 MANAGE## @   (0002) 2019-01-29
(R) UDSHASH  @   (0002) 2019-01-29 VERWAL## @   (0002) 2019-01-28
      4 (R)-ELEMENT(S) IN THIS TABLE OF CONTENTS
  
//END
PRINTOUT:
.
.
.
             SCHEMANAME       :  MAIL-ORDERS  
             SUBSCHEMANAME    :  ADMIN       
             MODUL-ENTRY      :  ADMIN## 
             LENGTH OF MODUL  :         6408 BYTES
             SSITAB-VERSION   :            2