• 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
    ARCAD Software

    [Webinar] Trends for 2026: ARCAD Software’s strategic vision

    Between the acceleration of artificial intelligence, constant pressure to modernize existing systems, and ever-increasing security requirements, 2026 is shaping up to be a decisive year for legacy platforms.

    At the start of this new year, this webinar offers strategic insight into the future of these critical environments, which are at the heart of information systems.

    Join Philippe Magne, CEO of ARCAD Software, as he shares his analysis of the major trends and structural issues facing organizations:

    • DevSecOps: What are the current trends in DevOps transformation?
    • Generative artificial intelligence: What are the concrete use cases and measurable benefits for application development and maintenance?
    • Critical application security: How to respond to growing and sophisticated threats?
    • Cloud and hybridization: How do legacy applications fit into current cloud strategies?

    Save your seat for March 24 at 11 AM EDT!

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    A Simple Encryption/Decryption Algorithm for Numbers Admin Alert: Getting Ready for Single Sign-On

    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

  • No Joke: Big Memory And Flash Price Hikes Coming April 1
  • Strategic Topics To Think About For 2026, Part 2
  • Guru: IBM i Job Log Detective Brings Structure To Job Log Analysis In VS Code
  • IBM Launches Hybrid Cloud Backup Product With Cobalt Iron
  • IBM i PTF Guide, Volume 28, Number 10
  • Why You Need To Think About Offsite Data Protection
  • IBM Gets Bob 1.0 Off The Ground
  • You Store The Crown Jewels In A Safe, Not In A Bucket
  • More Power Systems Withdrawals, And Some From Red Hat, Too
  • Price Increases Are Here, Or Pending, And For Sure For Memory

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