This document covers the following topics:
If the maximum number of occurrences of periodic groups or multiple fields is known, specify this number in Predict. Otherwise Adabas Native SQL will allocate buffers using the default maximum values, resulting in wasted storage.
Correct use of the GROUP STRUCT
attribute
in Predict can save significant amounts of space in the format buffers that are
used when accessing records containing periodic groups. See Defining
More Attributes of Fields in section Field of
chapter Predefined Object Types in the Predict
Reference Manual.
If the database is accessed from many modules within one linked program,
the global parameter OPTIONS DYNAMCID.
should be
specified. This ensures that a unique command-ID will be generated for each
Adabas command if the same cursor-name is used in more than one module. Be
aware that this can degrade run-time performance. See
Improving Adabas Native SQL
Efficiency and the section on using command-IDs in the
Adabas Command Reference Manual.
The TRACE and FLOW facilities, which are switched on by means of global parameters, can be used to find runtime errors in the application program.
The Adabas Native SQL preprocessor supports the COPY and GENERATE statements. These are compatible with the implementation of the COPY and GENERATE statements in the Predict preprocessor, so it should not normally be necessary to use both Adabas Native SQL and Predict preprocessors.
The data dictionary definition of a multiple-value field within a periodic group should not specify a counter field.
Field names as defined in the data dictionary may include hyphens ("-") and/or break characters ("_"). With Adabas Native SQL, each reference to a field name must match the definition in the data dictionary exactly. However, when generating PL/I output, Adabas Native SQL will change all hyphens found in data dictionary definitions to break characters, since hyphens are not valid in PL/I identifiers.
With previous versions of Adabas Native SQL, it was not necessary for references to field names to match the definitions in the data dictionary exactly: all break characters found in the source program were converted to hyphens before being compared with the data dictionary definitions; then, when generating PL/I output, Adabas Native SQL changed all hyphens to break characters.
The global parameter UNDERSCORE NO.
can be used
to ensure that Adabas Native SQL processes hyphens and break characters in a
manner compatible with earlier versions.
After issuing the READ ISN statement with OPTIONS
SEQUENCE
, the program should check for end-of-file (ADACODE = 3).
In some applications, it may be necessary to compare the ISN of the record that
was read with the ISN that was specified in the WHERE
clause of the statement.
When using the PL/I compiler, the margins should be set to (2,72) (these are the default values).
In PL/I, it is not possible to assign a structure variable to a superdescriptor in the WHERE clause. A string variable should be used in place of the structure variable.
The last statement in a COBOL/II program should not be an Adabas Native
SQL statement. If necessary, the statement EXIT.
can be
coded at the end of the program.
The Adabas Native SQL preprocessor can set the following condition codes:
Code | Meaning |
---|---|
0 | No error was detected |
4 | One or more warning messages issued during processing. |
8 | One or more errors found during processing. |
12 | Adabas Native SQL abended. |
Programs generated by the Adabas Native SQL preprocessor can cause various errors at runtime. Adabas errors are detected by the generated code. In COBOL and PL/I programs, the Adabas response code as described in the Adabas Messages and Codes Manual is returned to the calling procedure. In FORTRAN programs, response code 8 is returned to the calling procedure.
This message is:
SQL0217 FDIC DBID OR FDIC FNR DOES NOT MATCH THE CONTROL RECORD
This message occurs if a DDM from another system is loaded into the Natural FDIC file and thereafter the DBID and FNR of the DDM are changed online to the current FDIC's DBID and FNR.
To rectify this, start the Natural containing the Predict:
LOGON SYSDIC MENU D for defaults A for Adabas Native SQL <Enter> . to exit
This will reset the Adabas Native SQL control record.
Using the HISTOGRAM and READ statements as much as possible in preference to FIND can help to reduce the number of accesses made to the database.
An explicit Adabas command ID is assigned whenever a cursor is declared in an Adabas Native SQL statement. Adabas Native SQL statements that are performed repeatedly should have a cursor, since the command ID derived from the cursor name is used by Adabas to indicate that the format buffer need not be translated repeatedly.
Periodic groups and multiple fields should only be referenced using variable indices when this is unavoidable, since variable indices cause additional format translations and also additional RC commands to be executed.
The number of record buffers generated by Adabas Native SQL can be
reduced by coding UPDATE and INSERT statements with the WHERE
CURRENT OF cursor-name
clause but
without the SET
clause. This only applies if the UPDATE
or INSERT statement and the statement referenced by the cursor-name contain the
same field structure.
Program efficiency is improved if only those fields that are needed are coded in the SELECT clause. You may be tempted to write "SELECT *" instead of coding the name of each field, but this can result in excessively large record buffers and slower-running programs.
Application programs, in particular online application programs, should use the the global options parameter OPTIONS GFORMAT. This can improve efficiency by reducing the number of format buffer translations that are performed at runtime.