Link to home
Start Free TrialLog in
Avatar of CompTech810
CompTech810Flag for United States of America

asked on

IBMi QP2SHELL2 error CPFB9C0 (PASE for i program not found or in use. Path name is......)

I have a CL that is using QP2SHELL2 to call an API url and I'm getting error: CPFB9C0 (PASE for i program not found or in use. Path name is......)  .  I have another CL program that works fine and does close the same thing.  What am I missing.

Thanks Experts!
Avatar of Gary Patterson, CISSP
Gary Patterson, CISSP
Flag of United States of America image

Please (always) provide the entire error message (first and second level message text).

Also please provide the line of code where you are calling in the working and non-working programs.

The full error message provides specific diagnostic information that helps pinpoint the root cause of the problem.  Specifically the path name of the missing PASE program.

QP2SHELL2 isn't the missing program.  It is a PASE program at the mystery path that wasn't provided.

Ultimately the problem usually comes down to one of two things:

1) The PASE mystery program you want to call either isn't installed, or it isn't installed where you (or PASE) is looking for it.
2) The IBM i user that you are running QP2SHELL2 under doesn't have PASE permissions to the mystery program.

Once you look up the error message, look at the path it mentions.  Look in that location in the IFS (possibly relative to /QOpenSys), and see if the program in question is installed at that location try:

WRKLNK '/pathFromCPFB9C0message'
WRKLNK '/QOpenSys/pathFromCPFB9C0message'

Where pathFromCPFB9C0message is the path minus the name of the executable (ssh, wget, curl, etc)
Avatar of CompTech810

ASKER

Hi Gary!

Opps....

Here is the error:
2 > /*      */                                                                
2 > DM                                                                        
    /*      */                                                                
2>> CALL TEXTAPI                                                              
    PASE for i program not found or in use. Path name is                      
      /QOpenSys/usr/bin/curl -k                                              
      https://api.twilio.com/2010-04-01/Accounts/AC69ada3934c8908e6f749ce73f4b
      123456/Messages.json --data-urlencode "Body=Hi there!" --data-urlencode  
      "From=+18882223333" --data-urlencode "To=+18884445555" -u              
      AC69ada3934c8908e6f749ce73f4bb123456:f1d130e98abf4b5fb09ee14c14d123456.    
    Error loading PASE for i program /QOpenSys/usr/bin/curl -k                
      https://api.twilio.com/2010-04-01/Accounts/AC69ada3934c8908e6f749ce73f4b
      123456/Messages.json --data-urlencode "Body=Hi there!" --data-urlencode  
      "From=+18882223333" --data-urlencode "To=+18884445555" -u              
   AC69ada3934c8908e6f749ce73f4b123456:f1d130e98abf4b5fb09ee14c14123456.  
   See previous messages.                                                
 Function check. CPFB9C0 unmonitored by TEXTAPI at statement 4600,      
   instruction X'0084'.                                                  
 CPFB9C0 received by TEXTAPI at 4600. (C D I R)                          

This is line 46.00 of the CL
0046.00              CALL       PGM(QP2SHELL2) PARM(&URL1)                                  

This is the dump of the CL:
'/QOpenSys/usr/bin/curl -k'
' https://api.twilio.com/2'
'010-04-01/Accounts/AC69ad'
'a3934c8908e6f749ce73f4b12'
'3456/Messages.json --data-'
'urlencode "Body=Hi there!'
'" --data-urlencode "From='
'+18882223333" --data-urle'
'ncode "To=+18884445555" -'
'u AC69ada3934c8908e6f749c'
'e73f4b123456:f1d130e98abf4'
'b5fb09ee14c14123456'      


I also forgot to mention that when I run the long variable from above in Qp2TERM it works.  The program 'curl' is installed and works under the user account that I am signed on with.

Thanks so much!!
Thanks for the quick responses!

I did.  Here is the code.

0001.00 TEXTAPI:     PGM                                                                    
0002.00              DCL        VAR(&URL1) TYPE(*CHAR) LEN(294)                            
0003.00              DCL        VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')                  
0004.00              DCL        VAR(&CMD) TYPE(*CHAR) LEN(22) +                            
0005.00                           VALUE('/QOpenSys/usr/bin/curl')                          
0006.00              DCL        VAR(&PARM1) TYPE(*CHAR) LEN(2) +                            
0007.00                           VALUE('-k')                                              
0008.00              DCL        VAR(&PARM2) TYPE(*CHAR) LEN(4) +                            
0009.00                           VALUE('POST')                                            
0010.00              DCL        VAR(&PARM3) TYPE(*CHAR) LEN(91) +                          
0011.00                           VALUE('https://api.twilio.com/2010-04-01/Ac+              
0012.00                           counts/AC69ada3934c8908e6f749ce0123456789/M+              
0013.00                           essages.json')                                            
0014.00              DCL        VAR(&DASH) TYPE(*CHAR) LEN(16) +                            
0015.00                           VALUE('--data-urlencode')                                
0016.00              DCL        VAR(&PARM4) TYPE(*CHAR) LEN(16) +                          
0017.00                           VALUE('"Body=Hi there!"')                                
0018.00              DCL        VAR(&PARM5) TYPE(*CHAR) LEN(19) +                          
0019.00                           VALUE('"From=+18882223333"')                              
0020.00              DCL        VAR(&PARM6) TYPE(*CHAR) LEN(17) +                          
0021.00                           VALUE('"To=+18884445555"')                                
0022.00              DCL        VAR(&PARM7) TYPE(*CHAR) LEN(2) VALUE('-u')                  
0023.00              DCL        VAR(&PARM8) TYPE(*CHAR) LEN(67) +                          
0024.00                           VALUE('AC69ada3934c8908e6f749ce73f4bb123456:f+    
0025.00                           1d130e98abf4b5fb09ee14c14d123456')              
0026.00              CHGVAR     VAR(&CMD) VALUE(&CMD *TCAT &NULL)                
0027.00              CHGVAR     VAR(&PARM1) VALUE(&PARM1 *TCAT &NULL)            
0028.00              CHGVAR     VAR(&PARM2) VALUE(&PARM2 *TCAT &NULL)            
0029.00              CHGVAR     VAR(&PARM3) VALUE(&PARM3 *TCAT &NULL)            
0030.00              CHGVAR     VAR(&PARM4) VALUE(&PARM4 *TCAT &NULL)            
0031.00              CHGVAR     VAR(&PARM5) VALUE(&PARM5 *TCAT &NULL)            
0032.00              CHGVAR     VAR(&PARM6) VALUE(&PARM6 *TCAT &NULL)            
0033.00              CHGVAR     VAR(&PARM7) VALUE(&PARM7 *TCAT &NULL)            
0034.00              CHGVAR     VAR(&PARM8) VALUE(&PARM8 *TCAT &NULL)            
0035.00              CHGVAR     VAR(&URL1) VALUE(&CMD *BCAT &PARM1 *BCAT +        
0036.00                           &PARM3 *BCAT &DASH *BCAT +                      
0037.00                           &PARM4 *BCAT &DASH *BCAT &PARM5 *BCAT +        
0038.00                           &DASH *BCAT &PARM6 *BCAT &PARM7 *BCAT +        
0039.00                           &PARM8 *TCAT &NULL)                            
0040.00              DMPCLPGM                                                    
0041.00              CALL       PGM(QP2SHELL2) PARM(&URL1)                        
0042.00              DLYJOB     DLY(60)                                          
0043.00                                                                          
0044.00 EOJ:         ENDPGM
When I say "show the full error", I mean:

Run the program,
Display the job log (DSPJOBLOG)
Press F10 to display detailed messages
Put your cursor on the "Function check. CPFB9C0 unmonitored by TEXTAPI at statement 4600, instruction X'0084'.  " error.
Press F1.

Post all of it.
I had removed lines that where remarked out, so the CALL is now at line 41.00.

Message ID . . . . . . :   CPF9999       Severity . . . . . . . :   40        
Message type . . . . . :   Escape                                            
Date sent  . . . . . . :   08/08/19      Time sent  . . . . . . :   10:39:07  
                                                                             
Message . . . . :   Function check. CPFB9C0 unmonitored by TEXTAPI at        
  statement 4100, instruction X'0080'.                                        
Cause . . . . . :   An escape exception message was sent to a program which  
  did not monitor for that message. The full name of the program to which the
  unmonitored message was sent is TEXTAPI  . At the time the message was sent
  the program was stopped at higher level language statement number(s) 4100.  
  If more than one statement number is shown, the program was a bound program.
  Optimization does not allow a single statement number to be determined. If  
  *N is shown as a value, it means the actual value was not available.        
Recovery  . . . :   See the low level messages previously listed to locate the
  cause of the function check.  Correct any errors, and then try the request  
  again.
Ok - I just looked at the code again.  

Not sure if this is causing the problem, but don't null terminate all your working variables.  You maybe inserting nulls into the string (I don't know offhand how TCAT and BCAT interoperate with trailing nulls).  I can't tell without seeing a hex dump of the URL1 variable.

You should only be null terminating the URL1 variable.

Also please post detailed error messages for

PASE for i program not found or in use. Path name is /QOpenSys/usr/bin/curl -k                                              
and
Error loading PASE for i program /QOpenSys/usr/bin/curl -k    

messages
I have attached the CL dump with hex and the source code with working auth codes.
QPPGMDMP129696.txt
QPSUPRTF129696.txt
ASKER CERTIFIED SOLUTION
Avatar of Gary Patterson, CISSP
Gary Patterson, CISSP
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Your a genius!

Hopefully this is the last issue with this.  I made the changes and ran the CL but now it comes back with something that looks like it is looking for an option.  I have '-k' as an option which ignores a SSL certificate (because it is a trusted site), so I'm not sure what it is trying to tell me.  I have attached a screen print and CL dump.
QPPGMDMP129869.txt
Curl_Option.docx
Looks right to me, but not sure what version of curl you have installed.

Check curl --help to see if -k is supported in your version.

Try --insecure instead of -k.
Maybe you need to separate each parm into a separate variable.

Cmd = /QOpenSys/usr/bin/curl (+ null)
Parm1 = '-k' (+ null)
Parm2 = etc

CALL PGM(QP2SHELL) PARM(&CMD &PARM1 &PARM2 ...)
Hi Gary!

You are correct!  I started to break the long string down as you showed above before your message.  I'm still debugging.  I'll update after I finish.  Thanks!
Sorry for the delay.  I've been working on other things.

I have the code working now but when it finishes it sits with a message:  Press ENTER to end terminal session

I have tried others suggestion but it still has the message and doesn't end the program.  Any ideas? Code below:

    100 TEXTAPI:     PGM                                                                                                07/30/19
    200              DCL        VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')                                              10/26/18
    300              DCL        VAR(&CMD) TYPE(*CHAR) LEN(22) +                                                         08/29/19
    400                           VALUE('/QOpenSys/usr/bin/curl')                                                       11/01/18
    500              DCL        VAR(&K) TYPE(*CHAR) LEN(2) +                                                            08/30/19
    600                           VALUE('-k')                                                                           08/30/19
    700              DCL        VAR(&URL) TYPE(*CHAR) LEN(91) +                                                         08/29/19
    800                           VALUE('https://api.twilio.com/2010-04-01/Ac+                                          08/29/19
    900                           counts/AC69ada3934c8908e6f749ce0123456789/M+                                          08/29/19
   1000                           essages.json')                                                                        08/29/19
   1100              DCL        VAR(&DASH) TYPE(*CHAR) LEN(16) +                                                        08/29/19
   1200                           VALUE('--data-urlencode')                                                             08/29/19
   1300              DCL        VAR(&U) TYPE(*CHAR) LEN(2) +                                                            09/03/19
   1400                           VALUE('-u')                                                                           09/03/19
   1500              DCL        VAR(&BODY) TYPE(*CHAR) LEN(13)                                                          08/29/19
   1600              DCL        VAR(&BODY1) TYPE(*CHAR) LEN(5) +                                                        08/29/19
   1700                           VALUE('Body=')                                                                        08/29/19
   1800              DCL        VAR(&BODY2) TYPE(*CHAR) LEN(8) +                                                        08/29/19
   1900                           VALUE('Hi there')                                                                     08/29/19
   2000              DCL        VAR(&FROM) TYPE(*CHAR) LEN(17)                                                          08/29/19
   2100              DCL        VAR(&FROM1) TYPE(*CHAR) LEN(7) +                                                        08/29/19
   2200                           VALUE('From=+1')                                                                      08/29/19
   2300              DCL        VAR(&FROM2) TYPE(*CHAR) LEN(10) +                                                       08/29/19
   2400                           VALUE('8141234567')                                                                   08/29/19
   2500              DCL        VAR(&FROM3) TYPE(*CHAR) LEN(17)                                                         09/06/19
   2600              DCL        VAR(&TO1) TYPE(*CHAR) LEN(5) +                                                          08/29/19
   2700                           VALUE('To=+1')                                                                        08/29/19
   2800              DCL        VAR(&TO2) TYPE(*CHAR) LEN(10) +                                                         08/29/19
   2900                           VALUE('81431234567)                                                                   08/29/19
   3000              DCL        VAR(&TO3) TYPE(*CHAR) LEN(15)                                                           09/06/19
   3100              DCL        VAR(&TO) TYPE(*CHAR) LEN(15)                                                            09/06/19
   3200              DCL        VAR(&KEY) TYPE(*CHAR) LEN(68) +                                                         09/06/19
   3300                           VALUE('AC69ada3934c8908e6f749ce0123456789M:f+                                         09/06/19
   3400                           1d130e98abf4b5fb09ee10123456789')                                                     09/06/19
   3500              CHGVAR     VAR(&BODY) VALUE(&BODY1 *CAT &BODY2)                                                    08/29/19
   3600              CHGVAR     VAR(&FROM3) VALUE(&FROM1 *CAT &FROM2)                                                   09/06/19
   3700              CHGVAR     VAR(&FROM) VALUE(&FROM3)                                                                09/06/19
   3800              CHGVAR     VAR(&FROM) VALUE(&FROM *TCAT &NULL)                                                     09/03/19
   3900              CHGVAR     VAR(&TO3) VALUE(&TO1 *CAT &TO2)                                                         09/06/19
   4000              CHGVAR     VAR(&TO) VALUE(&TO3)                                                                    09/06/19
   4100              CHGVAR     VAR(&CMD) VALUE(&CMD *TCAT &NULL)                                                       08/30/19
   4200              CHGVAR     VAR(&DASH) VALUE(&DASH *TCAT &NULL)                                                     09/06/19
   4300              CHGVAR     VAR(&FROM) VALUE(&FROM *TCAT &NULL)                                                     08/30/19
   4400              CHGVAR     VAR(&TO) VALUE(&TO *TCAT &NULL)                                                         09/06/19
   4500              CHGVAR     VAR(&KEY) VALUE(&KEY *TCAT &NULL)                                                       09/06/19
   4600              DMPCLPGM                                                                                           08/08/19
   4700              CALL       PGM(QP2SHELL) PARM(&CMD +                                                               09/06/19
   4800                           &K +                                                                                  09/06/19
   4900                           &URL &DASH +                                                                          09/06/19
   5000                           &BODY &DASH +                                                                         09/06/19
   5100                           &FROM &DASH +                                                                         09/06/19
   5200                           &TO &U +                                                                              09/06/19
   5300                           &KEY)                                                                                 09/06/19
   5400 /*           DLYJOB     DLY(10)                                           */                                    09/09/19
   5500              ADDENVVAR  ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE(NONE) +                                               09/09/19
   5600                           LEVEL(*JOB) REPLACE(*YES)                                                             09/09/19
   5700 EOJ:         ENDPGM                                                                                             08/08/19
                                  * * * *  E N D  O F  S O U R C E  * * * *
SBMJOB D'oh
Thanks again Gary!