PRINT [ ALLBASE/SQL Reference Manual ] MPE/iX 5.5 Documentation
ALLBASE/SQL Reference Manual
PRINT
The PRINT statement is used inside a procedure to store the content of
user-defined strings, local variables, parameters, or built-in variables
in the message buffer for display by ISQL or an application program.
Scope
Procedures only
SQL Syntax
{'Constant' }
PRINT {:LocalVariable };
{:Parameter }
{::Built-inVariable}
Parameters
Constant is a string literal.
LocalVariable is a local variable declared within the
procedure. Types and sizes are the same as for
column definitions, except you cannot specify a
LONG data type.
Parameter is a parameter declared within the procedure.
Built-inVariable is one of the following built-in variables used
for error handling:
* ::sqlcode
* ::sqlerrd2
* ::sqlwarn0
* ::sqlwarn1
* ::sqlwarn2
* ::sqlwarn6
* ::activexact
The first six of these have the same meaning that
they have as fields in the SQLCA in application
programs. Note that in procedures, sqlerrd2
returns the number of rows processed for all host
languages. However, in application programs,
sqlerrd3 is used in COBOL, Fortran, and Pascal,
while sqlerr2 is used in C. ::activexact
indicates whether a transaction is in progress or
not. For additional information, refer to the
application programming guides and to the chapter
"Constraints, Procedures, and Rules."
Description
* The results of any PRINT statements issued during the execution of
a procedure are placed in the ALLBASE/SQL message buffer, and may
be displayed like other messages. In an application program, they
can be retrieved with SQLEXPLAIN upon exiting the procedure.
* The message number 5000 is used for all PRINT statements.
Authorization
Anyone can issue the PRINT statement.
Examples
CREATE PROCEDURE Process15 (PartNumber CHAR (16) NOT NULL) AS
BEGIN
DECLARE PartName CHAR(30);
SELECT PartName INTO :PartName
FROM PurchDB.Parts
WHERE PartNumber = :PartNumber;
IF ::sqlcode <> 0 THEN
PRINT 'Row not retrieved. Error code:';
PRINT ::sqlcode;
ELSE
PRINT :PartName;
ENDIF;
END;
When an application program calls a procedure, you can include PRINT
statements in the procedure for later retrieval by the application:
IF ::sqlcode = 100 THEN
PRINT 'Row was not found';
ELSE
PRINT 'Error in SELECT statement';
ELSEIF ::sqlcode=0 THEN
PRINT :PartName;
ENDIF;
On returning from the procedure, use SQLEXPLAIN in a loop to extract all
the messages generated by PRINT during the operation of the procedure.
In C:
while (sqlcode != 0 || sqlwarn[0]=='W') {
EXEC SQL SQLEXPLAIN :SQLMessage;
printf("%s\n",SQLMessage);
}
In COBOL:
IF SQLCODE IS NOT ZERO OR SQLWARN0 = "W"
PERFORM M100-DISPLAY-MESSAGE
UNTIL SQLCODE IS ZERO AND SQLWARN0 = "W".
:
M100-DISPLAY-MESSAGE.
EXEC SQL SQLEXPLAIN :SQLMESSAGE END-EXEC.
DISPLAY SQLMESSAGE.
M100-EXIT.
EXIT.
MPE/iX 5.5 Documentation