Solved

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

Posted on 2004-09-15
10
902 Views
Last Modified: 2008-01-09
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.
0
Comment
Question by:gummylick
  • 3
  • 2
  • 2
  • +2
10 Comments
 
LVL 14

Expert Comment

by:daveslater
ID: 12072663
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
 
LVL 14

Expert Comment

by:daveslater
ID: 12073906
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
 

Author Comment

by:gummylick
ID: 12076741
Thanks for your suggestion, dave.  I removed the "/" before "/QSYS.LIB" but continue to get the same error.  Thanks for your help.
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:gummylick
ID: 12076757
When I remove "/QSYSLIB/"  I get:  

[IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0104 - Token / was not valid. Valid tokens: <END-OF-STATEMENT>.
0
 
LVL 33

Expert Comment

by:shalomc
ID: 12079691
try either
cmd400.CommandText = "{{CALL W2/W1LI (?,?,?,?,?,?,?)}}"

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

ShalomC
0
 
LVL 13

Expert Comment

by:samic400
ID: 12101347
Did you put the program on the AS400 as a stored procedure?
0
 
LVL 13

Expert Comment

by:samic400
ID: 12101356
Program has to be registered as a stored procedure to handle the parameters.

0
 

Author Comment

by:gummylick
ID: 12373887
I ended up using a work around. :(.
0
 

Accepted Solution

by:
modulo earned 0 total points
ID: 12512398
PAQed, with points refunded (300)

modulo
Community Support Moderator
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

ConnectWise and their customers need to ensure critical alerts automatically reach the right person at the right time. MSP superheros efficiently respond to these alerts key is providing automatic, intelligent alerting that generates a complete audi…
The Nano Server Image Builder helps you create a custom Nano Server image and bootable USB media with the aid of a graphical interface. Based on the inputs you provide, it generates images for deployment and creates reusable PowerShell scripts that …
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

837 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question