zOs/REXX.O13/F2XNTRFC
PROC 0 TRACE(TRACE) LANG(MIXD) +
SSID() SQLID() OPTION(BROWSE) +
MAXROW(2000) SQL() +
QUAL() NAME() LOCNAME() ENTRY(FULL) LIBDEF(Y)
/*---------------------------------------------------*/
/* COPYRIGHT (C) 1989 - 2001 COMPUWARE CORPORATION. */
/* ALL RIGHTS RESERVED. */
/* UNPUBLISHED - RIGHTS RESERVED */
/* UNDER THE COPYRIGHT LAWS OF THE UNITED STATES. */
/*---------------------------------------------------*/
IF &TRACE = TRACE THEN CONTROL LIST CONLIST SYMLIST
IF &SYSUID = &STR(X247267) THEN CONTROL MSG LIST SYMLIST CONLIST
IF &SQLID = THEN SET &SQLID = &SYSUID
IF &QUAL = THEN SET &QUAL = &SYSUID
IF &SSID = THEN GOTO ERR3
IF (&ENTRY NE SPUFI) && -
(&ENTRY NE FULL) && -
(&ENTRY NE TEMPLATE) THEN GOTO ERR5
IF &ENTRY = SPUFI THEN -
IF &STR(&SQL) = THEN GOTO ERR4
IF &ENTRY NE SPUFI THEN -
IF &QUAL = THEN GOTO ERR1
IF &ENTRY NE SPUFI THEN -
IF &NAME = THEN GOTO ERR2
IF (&OPTION NE EDIT) && -
(&OPTION NE BROWSE) THEN GOTO ERR6
IF &OPTION = EDIT THEN -
SET &FUNC = 2
ELSE -
SET &FUNC = 1
IF &ENTRY = SPUFI THEN -
SET &OPT = &FUNC..S
ELSE -
IF &ENTRY = TEMPLATE THEN -
SET &OPT = &FUNC..T
ELSE -
SET &OPT = &FUNC
/*----------------------------------------------------------------
/* VERIFY LENGTHS ARE ACCEPTABLE.
/*----------------------------------------------------------------
WRITE THEN LENGTH OF SSID = &LENGTH(&SSID)
IF &LENGTH(&SSID) > 4 THEN -
DO
SET &TOKEN = SSID
GOTO LNGERR
END
IF &LENGTH(&SQLID) > 8 THEN -
DO
SET &TOKEN = SQLID
GOTO LNGERR
END
IF &LENGTH(&OPT) > 8 THEN -
DO
SET &TOKEN = OPT
GOTO LNGERR
END
/* IF &LENGTH(&NAME) > 18 THEN - */ /*FD48ITB1D4-INT*/
IF &LENGTH(&NAME) > 128 THEN -
DO
SET &TOKEN = NAME
GOTO LNGERR
END
/* IF &LENGTH(&QUAL) > 8 THEN - */ /*FD48ITB1D4-INT*/
IF &LENGTH(&QUAL) > 128 THEN -
DO
SET &TOKEN = QUALIFIER
GOTO LNGERR
END
IF &LENGTH(&STR(&MAXROW)) > 5 THEN -
DO
SET &TOKEN = MAXROWS
GOTO LNGERR
END
/* IF &LENGTH(&STR(&SQL)) > 256 THEN - */ /*FD48ITB1D4-INT*/
IF &LENGTH(&STR(&SQL)) > 2048 THEN -
DO
SET &TOKEN = SQL STATEMENT
GOTO LNGERR
END
IF &STR(&MAXROW) NE ALL THEN -
IF &MAXROW <= 0 THEN GOTO MAXRWERR
IF &STR(&MAXROW) = ALL THEN -
SET &MAXROW = &STR(*)
/*---------------------------------------------------------------
/* GET REQUIRED LIBRARIES ALLOCATED TO RUN PRODUCT.
/*---------------------------------------------------------------
IF &LIBDEF = Y THEN -
ISPEXEC SELECT CMD(F2LIBRZ# DB2(Y) TRACE(&TRACE))
/*----------------------------------------------------------------*/
/* GET PLAN BASED ON SSID PT134860 */
/*----------------------------------------------------------------*/
ISPEXEC SELECT CMD(F2GETPLN SSID(&SSID) TRACE(&TRACE)) +
NEWAPPL(FD49) PASSLIB
/*---------------------------------------------------------------
/* CALL FILEAID/DB2 EXTERNAL ENTRY MODULE TO PERFORM FUNCTION.
/*---------------------------------------------------------------
SET &F2SSID = SSID(&SSID)
SET &F2SQLID = SQLID(&SQLID)
SET &F2OPT = OPT(&OPT)
SET &F2MAXROWS = MAXROWS(&STR(&MAXROW))
SET &F2LOCNAME = LOCNAME(&LOCNAME)
IF &ENTRY = SPUFI THEN -
DO
SET &F2SQL = &STR(SQL(&SQL))
SET &F2NAME =
SET &F2QUAL =
END
ELSE -
DO
SET &F2SQL =
SET &F2NAME = NAME(&NAME)
SET &F2QUAL = QUAL(&QUAL)
END
/* CHANGED NEWAPPL FROM F2DE TO FD48 FD48ITB1-09*/
ISPEXEC SELECT CMD(F2XTRN01 +
&F2SSID &F2OPT &F2SQLID +
&F2QUAL &F2NAME &F2MAXROWS +
&F2SQL &F2LOCNAME +
) +
NEWAPPL(FD49) NOCHECK PASSLIB MODE(FSCR)
SET &RC = &LASTCC
/*---------------------------------------------------------------
/* FREE LIBDEFS DONE IN PREVIOUS STEP.
/*---------------------------------------------------------------
IF &LIBDEF = Y THEN -
ISPEXEC SELECT CMD(F2LIBRZ# FREE(FREE) TRACE(&TRACE))
IF &RC = 0 THEN GOTO RETURN
GOTO EXECERR
/*----------------------------------------------------------------
/* SET APPROPRIATE MESSAGE.
/*----------------------------------------------------------------
LNGERR:-
SET &MSG = THE LENGTH ENTER FOR "&TOKEN" IS TOO LONG.
SET &RC = 8
GOTO DISPMSG
ERR1:-
SET &MSG = A QUALIFIER MUST BE SPECIFIED FOR THE "&ENTRY" OPTION.
SET &RC = 8
GOTO DISPMSG
ERR2:-
SET &MSG = AN OBJECT NAME MUST BE SPECIFIED FOR THE "&ENTRY" OPTION.
SET &RC = 8
GOTO DISPMSG
ERR3:-
SET &RC = 8
SET &MSG = NO DB2 SUBSYSTEM ID WAS SPECIFIED.
GOTO DISPMSG
ERR4:-
SET &RC = 8
SET &MSG = NO SQL SELECT STATMENT WAS SPECIFIED FOR THE SPUFI OPTION.
GOTO DISPMSG
ERR5:-
SET &RC = 8
SET &MSG = "&ENTRY" IS NOT A VALID ENTRY TYPE.
GOTO DISPMSG
ERR6:-
SET &RC = 8
SET &MSG = "&OPTION" IS NOT A VALID FUNCTION TYPE.
GOTO DISPMSG
EXECERR:-
SET &RC = 8
SET &MSG = FAILED TO EXECUTE FILEAID DB2 "&OPTION" FUNCTION.
GOTO DISPMSG
MAXRWERR:-
SET &RC = 8
SET &MSG = MAXROWS MUST BE EQUAL TO "ALL" OR GREATER THAN 0
GOTO DISPMSG
/*---------------------------------------------------------------
/* WRITE ERROR MESSAGE TO SCREEN.
/*---------------------------------------------------------------
DISPMSG: -
WRITE
WRITE &MSG
WRITE
/*---------------------------------------------------------------
/* RETURN TO CALLER.
/*---------------------------------------------------------------
RETURN: -
EXIT CODE (&RC)