• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • Omitting Parameters in RPG Programs and Modules

    November 8, 2002 Timothy Prickett Morgan

    Hey, Ted:

    I have a program that can receive four parameters. The first one is mandatory, and the last three are optional. If I call the program and pass parameters 1, 2, and 4 to it, the %parms built-in function tells me that three parameters were passed. How does the program know which three it is getting? Thanks!

    — Doug

    You can’t skip a parameter. If you pass three parameters, they are parameters 1, 2, and 3; number 4 will be undefined.

    The only way to skip parameter 3 is to specify OPTIONS(*OMIT) in its D spec. The value *OMIT allows you to pass the special value *OMIT as a parameter value. OPTIONS(*OMIT) is only allowed with parameters that are passed by reference. That includes parameters with the CONST keyword, which are passed by read-only reference.

    You can use the *OMIT value along with *NOPASS, but to keep it simple; I do not include *NOPASS in the following example.

    Here is the RPG source code for RPG module OMITPARMEE (Omit Parameter Callee):

    D calledproc      pr                  extproc('OMITPARMEE') 
    D   p1                          10a   const                 
    D   p2                          12a   const                 
    D   p3                           6a   const options(*omit)  
    D   p4                           2a   const                 
                                                                
    D calledproc      pi                                        
    D   p1                          10a   const                 
    D   p2                          12a   const                 
    D   p3                           6a   const options(*omit)  
    D   p4                           2a   const                 
                                                                
    D somevalue       s              6                          
                                                                
    C                   if        %addr(p3) = *null             
    C                   eval      somevalue = *all'*'           
    C                   else                                    
    C                   eval      somevalue = p3                
    C                   endif  
    C                   return
    

    Notice that the third parameter has the OPTIONS(*OMIT) keyword. If the caller passes the special value *OMIT, the address of the parameter will be null. For that reason, the module checks for a null address and does not use the value of the third parameter if the address is null.

    Here is module OMITPARMER (Omit Parameter Caller):

    D calledproc      pr                  extproc('OMITPARMEE') 
    D   p1                          10a   const                 
    D   p2                          12a   const                 
    D   p3                           6a   const options(*omit)  
    D   p4                           2a   const                 
                                                                
     /free                                                      
         callp calledproc ('ABC': 'DEFG': 'HIJKLM': 'NO');      
         callp calledproc ('ABC': 'DEFG': *OMIT   : 'NO');      
         *inlr = *on;                                           
     /end-free                                                  
    

    Notice the *OMIT value in the second CALLP.

    — Ted

    Sponsored By
    inFORM DECISIONS

    ELIMINATE THE COSTS OF PRE-PRINTED FORMS, LABOR AND POSTAGE WITH
    inFORM Decisions iDocs™ ‘Suite’

    iSeries based e-Forms, e-Checks, e-Mail, e-FAX, and Document Retrieval from the Web are available as individual modules or as a complete e-Document processing ‘Suite’.

    Click to Download the Complete Suite or Individual Modules today
    www.inFORMDecisions.com

    or call (800) 858-5544

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags: Tags: mgo_rc, Volume 2, Number 86 -- November 8, 2002

    Sponsored by
    Maxava

    Migrate IBM i with Confidence

    Tired of costly and risky migrations? Maxava Migrate Live minimizes disruption with seamless transitions.

    Upgrading to Power10, Power11, or cloud hosted system, Maxava has you covered!

    Book A Consultation Today

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Use the Full-Screen Debugger with OPM Programs Reader Feedback and Insights: Modernizing RPG II Programs

    Leave a Reply Cancel reply

MGO Volume: 2 Issue: 86

This Issue Sponsored By

    Table of Contents

    • Reader Feedback and Insights: Overlooking the Obvious
    • Odds and Ends
    • Omitting Parameters in RPG Programs and Modules

    Content archive

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

    Recent Posts

    • With Power11, Power Systems “Go To Eleven”
    • With Subscription Price, IBM i P20 And P30 Tiers Get Bigger Bundles
    • Izzi Buys CNX, Eyes Valence Port To System Z
    • IBM i Shops “Attacking” Security Concerns, Study Shows
    • IBM i PTF Guide, Volume 27, Number 26
    • Liam Allan Shares What’s Coming Next With Code For IBM i
    • From Stable To Scalable: Visual LANSA 16 Powers IBM i Growth – Launching July 8
    • VS Code Will Be The Heart Of The Modern IBM i Platform
    • The AS/400: A 37-Year-Old Dog That Loves To Learn New Tricks
    • IBM i PTF Guide, Volume 27, Number 25

    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