zOs/TX/WK910
/* rexx ****************************************************************
rexx exec sql gives sql error for set path
***********************************************************************/
address tso "SUBCOM DSNREXX"
if rc <> 0 then do
sRc = RXSUBCOM('ADD','DSNREXX','DSNREXX') /* ADD HOST CMD ENV */
if sRc <> 0 then
call err 'rc' sRc 'from RXSUBCOM(ADD, DSNREXX, DSNREXX)'
end
address dsnRexx "connect DBAF"
say 'connect sqlCode' sqlMsg()
address dsnRexx "execSql set :var = current timestamp"
say 'set var' sqlCode 'var=' var
address dsnRexx "execSql set path = 'SYSIBM'"
say "set path = 'SYSIBM' sqlCode" sqlCode sqlMsg()
address dsnRexx "execSql set path = SYSIBM"
say "set path = SYSIBM sqlCode" sqlCode sqlMsg()
address dsnRexx "execSql set path = ""SYSIBM"""
say "set path = ""SYSIBM"" sqlCode" sqlCode sqlMsg()
address dsnRexx "execSql set path = 'SYSIBM','SYSPROC'"
say "set path = 'SYSIBM','SYSPROC' sqlCode" sqlCode sqlMsg()
address dsnRexx "disconnect"
say 'disconnect sqlCode' sqlCode
exit
/*--- issue an sql error message -------------------------------------*/
sqlMsg: /* no procedure, to keep variables sql... */
signal on syntax name sqlMsgOnSyntax
ggRes = 'sqlCode' sqlCodeT(sqlCode, sqlErrMc, sqlwarn.0':' ,
|| sqlwarn.1||sqlwarn.2||sqlwarn.3||sqlwarn.4||sqlwarn.5',',
|| sqlwarn.6||sqlwarn.7||sqlwarn.8||sqlwarn.9||sqlwarn.10)
if 0 then
sqlMsgOnSyntax: do
ggRes = 'sqlCode' sqlCode translate(sqlErrMc, ',', 'ff'x),
'<<rexx sqlCodeT not found or syntax>>\nwarnings'
do ggX=0 to 10
if sqlWarn.ggx <> '' then
ggRes = ggRes ggx'='sqlWarn.ggx
end
end
signal off syntax
ggRes = ggRes'\nstate' sqlState'\nstmt = ' ggSqlStmt
ggPref = '\nwith'
ggXX = pos(':', ggSqlStmt)+1
do 12 while ggXX > 1
ggYY = verify(ggSqlStmt, ' ,:+-*/&%?|()[]', 'm', ggXX)
if ggYY < 1 then
ggYY = length(ggSqlStmt) + 1
ggVar = substr(ggSqlStmt, ggXX, ggYY - ggXX)
if ggVar <> '' then do
ggRes = ggRes || ggPref ggVar '=' value(ggVar)
ggPref = '\n '
end
ggXX = pos(':', ggSqlStmt, ggYY+1) + 1
end
return ggRes
endSubroutine sqlMsg