Calling a Program, Passing Parms from ASP to AS/400

I'm trying to call a program on our AS/400 and repeatedly get this error:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0104 - Token / was not valid. Valid tokens: : <IDENTIFIER>.

On this line: cmd400.EXECUTE parms,adcmdtxt


Code:
Set cmd400 = Server.CreateObject("ADODB.Command")
Set cmd400.activeConnection = AS400
cmd400.CommandType = adCmdText

cmd400.CommandText = "{{CALL /QSYS.LIB/W2.LIB/W1LI.PGM(?,?,?,?,?,?,?)}}"
cmd400.Prepared = True

cmd400.Parameters.Append cmd400.CreateParameter("PSessid", adDecimal, adParamInput)
cmd400.Parameters(0).Precision = 10
cmd400.Parameters(0).NumericScale = 0

cmd400.Parameters.Append cmd400.CreateParameter("PUser", adChar, adParamInput,15)

cmd400.Parameters.Append cmd400.CreateParameter("PCusnr", adDecimal, adParamInput)
cmd400.Parameters(2).Precision = 6
cmd400.Parameters(2).NumericScale = 0

cmd400.Parameters.Append cmd400.CreateParameter("PCpwd", adChar, adParamInput,25)

cmd400.Parameters.Append cmd400.CreateParameter("PIPAdd", adchar, adParamInput,15)

cmd400.Parameters.Append cmd400.CreateParameter("PInout", adDecimal, adParamInput)
cmd400.Parameters(5).Precision = 1
cmd400.Parameters(5).NumericScale = 0

cmd400.Parameters.Append cmd400.CreateParameter("PSuccess", adchar, adParamOutput,1)

psessid = session.sessionid
puser = uid
pcusnr = cnbr
pcpwd = pwd
pipadd = Request.ServerVariables("Remote_addr")
pinout = 1
            
parms = array(psessid,puser,pcusnr,pcpwd,pipadd,pinout,psuccess)

cmd400.EXECUTE parms,adcmdtxt

Thanks for your assistance.
gummylickAsked:
Who is Participating?
 
moduloConnect With a Mentor Commented:
PAQed, with points refunded (300)

modulo
Community Support Moderator
0
 
daveslaterCommented:
Hi the way I have done it in VB is
AS400Pgm.CommandText = "{{call DSLIB/PGM1(?)}}"
so you could try
cmd400.CommandText = "{{CALL W2.LIB/W1LI.PGM(?,?,?,?,?,?,?)}}"

Dave
0
 
daveslaterCommented:
I do not think you need the first / as the defualt is the root directory

cmd400.CommandText = "{{CALL QSYS.LIB/W2.LIB/W1LI.PGM(?,?,?,?,?,?,?)}}"
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
gummylickAuthor Commented:
Thanks for your suggestion, dave.  I removed the "/" before "/QSYS.LIB" but continue to get the same error.  Thanks for your help.
0
 
gummylickAuthor Commented:
When I remove "/QSYSLIB/"  I get:  

[IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0104 - Token / was not valid. Valid tokens: <END-OF-STATEMENT>.
0
 
shalomcCTOCommented:
try either
cmd400.CommandText = "{{CALL W2/W1LI (?,?,?,?,?,?,?)}}"

or
cmd400.CommandText = "{{CALL W2.W1LI (?,?,?,?,?,?,?)}}"

ShalomC
0
 
samic400Commented:
Did you put the program on the AS400 as a stored procedure?
0
 
samic400Commented:
Program has to be registered as a stored procedure to handle the parameters.

0
 
gummylickAuthor Commented:
I ended up using a work around. :(.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.