• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • Suppress Runtime Display When Qshell Cancels

    April 27, 2005 Hey, Ted

    Tahler’s Qshell tip works great. If there is an error in a CL program that runs the Start Qshell command (STRQSH or QSH), I receive escape message QSH0005. Unfortunately, an error also causes the system to display the C runtime display when I run interactively. I have to press Enter to continue. Can I suppress the error display?

    –John

    Yes. I wish I had included that information when we ran the article you mentioned. You need to assign the value NONE to environment variable QIBM_QSH_CMD_OUTPUT.

    addenvvar  envvar(QIBM_QSH_CMD_OUTPUT) value('NONE')
    

    Here’s more information I wish I had included: I have found that it’s often advantageous to build the Qshell command in a character variable, which can be dumped when the program cancels. When I view the entire command in the dump, my problem is often obvious.

    By way of example, here’s a CL program that runs the tr (Translate) command. Let’s call it CONVERT.

    pgm parm(&FromFile &ToFile &Conv)
    
       dcl   &Conv          *char     32
       dcl   &FromFile      *char     64
       dcl   &ToFile        *char     64
    
       dcl   &Abending      *lgl
       dcl   &Command       *char    128
       dcl   &MsgID         *char      7
       dcl   &MsgDta        *char    256
       dcl   &MsgF          *char     10
       dcl   &MsgFLib       *char     10
       dcl   &MsgKey        *char      4
       dcl   &PgmName       *char     10
       dcl   &RtnType       *char      2
       dcl   &Sender        *char     80
    
       monmsg cpf0000 exec(goto ForwardMsg)
    
       /* retrieve the program name */
       sndpgmmsg msg(' ') topgmq(*same) msgtype(*info) keyvar(&msgkey)
       rcvmsg    pgmq(*same) msgtype(*info) sender(&sender) rmv(*yes)
       chgvar    &PgmName   %sst(&Sender 56 10)
    
       /* convert the data */
    
       chgvar  var(&Command) +
               value('tr' *bcat &Conv *bcat '' *cat &ToFile)
    
       addenvvar  envvar(QIBM_QSH_CMD_ESCAPE_MSG) value('Y')
       monmsg cpfa980 exec(do)
          rcvmsg msgtype(*excp) rmv(*yes)
       enddo
       addenvvar  envvar(QIBM_QSH_CMD_OUTPUT) value('NONE')
       monmsg cpfa980 exec(do)
          rcvmsg msgtype(*excp) rmv(*yes)
       enddo
       QSH cmd(&Command)
       monmsg qsh0005 exec(goto abend)
    
       /* normal end of job */
       sndpgmmsg  msgid(cpf9898) msgf(qcpfmsg) msgtype(*comp) +
                       msgdta('Program' *bcat &PgmName *bcat +
                              'completed normally')
          return
    
       /* Routine to handle unexpected errors */
    Abend:
          if &Abending then(return)
          chgvar   &Abending '1'
          dmpclpgm
    
    ForwardMsg:
          rcvmsg     msgtype(*any) msgdta(&msgdta) msgid(&msgid) +
                        rtntype(&RtnType) +
                        msgf(&msgf) sndmsgflib(&msgflib)
          if ((&RtnType *eq '02') *or   /* diagnostic */ +
              (&RtnType *eq '15') *or (&RtnType *eq '17')) do  /* *escape */
             sndpgmmsg  msgid(&msgid)  msgf(&msgflib/&msgf) msgtype(*diag) +
                       msgdta(&msgdta)
          enddo
          if (&RtnType *ne '  ') then(goto ForwardMsg)
    Escape:
       sndpgmmsg  msgid(cpf9898) msgf(qcpfmsg) msgtype(*escape) +
                    msgdta('Program' *bcat &PgmName *bcat +
                           'ended abnormally')
    endpgm
    


    The call from another program might look like this:

    
    dcl   &Conv          *char     32
    dcl   &FromFile      *char     64
    dcl   &ToFile        *char     64
    
    chgvar  &conv   value('[:lower:] [:upper:]')
    chgvar  &FromFile +
               value('/QSYS.LIB/MYLIB.LIB/MYFILE.FILE/MBR1.MBR')
    chgvar  &ToFile +
               value('/QSYS.LIB/MYLIB.LIB/MYFILE.FILE/MBR2.MBR')
    call Convert parm(&FromFile &ToFile &Conv)
    

    –Ted

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    Rocket Software

    Unlock the full potential of your data with Rocket Software. Our scalable solutions deliver AI-driven insights, seamless integration, and advanced compliance tools to transform your business. Discover how you can simplify data management, boost efficiency, and drive informed decisions.

    Learn more today.

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    All You Need for B2B is GIS 4.0, Sterling Says Exercises in Simplicity

    Leave a Reply Cancel reply

Volume 5, Number 17 -- April 27, 2005
THIS ISSUE
SPONSORED BY:

WorksRight Software
Advanced Systems Concepts
Guild Companies
SoftLanding Systems

Table of Contents

  • A Simple Encryption/Decryption Algorithm for Numbers
  • Suppress Runtime Display When Qshell Cancels
  • Admin Alert: Getting Ready for Single Sign-On

Content archive

  • The Four Hundred
  • Four Hundred Stuff
  • Four Hundred Guru

Recent Posts

  • Meet The Next Gen Of IBMers Helping To Build IBM i
  • Looks Like IBM Is Building A Linux-Like PASE For IBM i After All
  • Will Independent IBM i Clouds Survive PowerVS?
  • Now, IBM Is Jacking Up Hardware Maintenance Prices
  • IBM i PTF Guide, Volume 27, Number 24
  • Big Blue Raises IBM i License Transfer Fees, Other Prices
  • Keep The IBM i Youth Movement Going With More Training, Better Tools
  • Remain Begins Migrating DevOps Tools To VS Code
  • IBM Readies LTO-10 Tape Drives And Libraries
  • IBM i PTF Guide, Volume 27, Number 23

Subscribe

To get news from IT Jungle sent to your inbox every week, subscribe to our newsletter.

Pages

  • About Us
  • Contact
  • Contributors
  • Four Hundred Monitor
  • IBM i PTF Guide
  • Media Kit
  • Subscribe

Search

Copyright © 2025 IT Jungle