• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • Forcing Keyword Parameters

    June 22, 2011 Ted Holt

    Programming languages use two conventions for passing arguments (commonly referred to as parameters) to a called routine. Some languages use positional parameters. That is, the parameters must be passed to the routine in a certain order. The other (and less error-prone) method is to password parameters in keyword format. IBM i allows you to force callers to use keyword format–to a point–when they use your CL commands. Here’s how.

    But first, let’s review the two major problems inherent in positional parameters. First, it is easy to get a parameter value into the wrong position. Take the following OCL command for example.

    LIBRLIBR HISLIB,HERLIB,,REPLACE,,REPLACE
    

    OCL uses commas to separate positional parameters. Adjacent commas mean that you are not passing a value for a parameter. If you omit one of the commas or add an extra comma, the system will not pass the correct values to the parameters of the LIBRLIBR routine.

    The second problem is that the meaning of each parameter is not obvious. Two parameters have the value REPLACE. What does each REPLACE mean in this context?

    In addition to OCL, other languages that use positional notation are the CALLP opcode in RPG and Unix (and Unix-like) shells, including Qshell.

    Keyword parameters do not have these problems because the order in which the parameters are coded does not matter, and each parameter’s function is documented by its keyword. Look at the following CL command.

    CPYSRCF FROMFILE(HISLIB/QRPGLESRC)
            TOFILE(HERLIB/QRPGLESRC)
            FROMMBR(REPLACE)
            MBROPT(*REPLACE)
    

    Is the meaning of any parameter in doubt?

    When you create a CL command of your own, give some thought to whether or not you want to force callers to enter keywords. The only advantage (of which I’m aware) of allowing users to enter parameters positionally is that the source code is sometimes cleaner and easier to read. Compare the following equivalent CL commands:

    IF (&OPTION *EQ 'W') DO
    
    IF COND(&OPTION *EQ '1') THEN(DO)
    

    Both are legible, but I prefer the first one. The second one is too cluttered for my taste. But the IF command only has two parameters. If there were, say, a half dozen or more, the absence of keywords would decrease readability.

    To force users to enter parameters in keyword format, use the MAXPOS parameter of the Create Command (CRTCMD) command.

    CRTCMD CMD(MYLIB/DOIT)
           PGM(*LIBL/DOITC)
           SRCFILE(MYLIB/QCMDSRC)
           SRCMBR(DOITX)
           <b>MAXPOS(1)<b>
    

    The help text for MAXPOS appears to me to be in error. It reads that the MAXPOS value must be greater than the number of required parameters, but my experience is that the MAXPOS value must be greater than <b>or equal to</b> the number of required parameters.

    And that brings up one little feature of which I am not fond. The preceding paragraph implies that you cannot force required parameters to be entered in keyword format. That is true, and I don’t like it, but nobody asked my opinion.

    If a caller passes too many parameters positionally, the system responds with two error messages: CPD0065 (Number of positional parameters exceeds limit of 1); and CPF0001 (Error found on DOIT command).

    For more information about positional and keyword formats, follow this link to IBM’s website.



                         Post this story to del.icio.us
                   Post this story to Digg
        Post this story to Slashdot

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    WorksRight Software

    Do you need area code information?
    Do you need ZIP Code information?
    Do you need ZIP+4 information?
    Do you need city name information?
    Do you need county information?
    Do you need a nearest dealer locator system?

    We can HELP! We have affordable AS/400 software and data to do all of the above. Whether you need a simple city name retrieval system or a sophisticated CASS postal coding system, we have it for you!

    The ZIP/CITY system is based on 5-digit ZIP Codes. You can retrieve city names, state names, county names, area codes, time zones, latitude, longitude, and more just by knowing the ZIP Code. We supply information on all the latest area code changes. A nearest dealer locator function is also included. ZIP/CITY includes software, data, monthly updates, and unlimited support. The cost is $495 per year.

    PER/ZIP4 is a sophisticated CASS certified postal coding system for assigning ZIP Codes, ZIP+4, carrier route, and delivery point codes. PER/ZIP4 also provides county names and FIPS codes. PER/ZIP4 can be used interactively, in batch, and with callable programs. PER/ZIP4 includes software, data, monthly updates, and unlimited support. The cost is $3,900 for the first year, and $1,950 for renewal.

    Just call us and we’ll arrange for 30 days FREE use of either ZIP/CITY or PER/ZIP4.

    WorksRight Software, Inc.
    Phone: 601-856-8337
    Fax: 601-856-9432
    Email: software@worksright.com
    Website: www.worksright.com

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Sponsored Links

    VAULT400:  Stuck in the 70's with Tape Backup? Get modern, secure back-up and DR
    Enforcive:  Enterprise security for the IBM i. Formerly Bsafe Information Systems
    SEQUEL Software:  FREE White Paper: The Race To Access Enterprise Data

    IT Jungle Store Top Book Picks

    BACK IN STOCK: Easy Steps to Internet Programming for System i: List Price, $49.95

    The iSeries Express Web Implementer's Guide: List Price, $49.95
    The iSeries Pocket Database Guide: List Price, $59
    The iSeries Pocket SQL Guide: List Price, $59
    The iSeries Pocket WebFacing Primer: List Price, $39
    Migrating to WebSphere Express for iSeries: List Price, $49
    Getting Started with WebSphere Express for iSeries: List Price, $49
    The All-Everything Operating System: List Price, $35
    The Best Joomla! Tutorial Ever!: List Price, $19.95

    Education Matching Innovation: OCEAN Tech Conference Building a Legacy

    Leave a Reply Cancel reply

Volume 11, Number 19 -- June 22, 2011
THIS ISSUE SPONSORED BY:

SEQUEL Software
ProData Computer Services
WorksRight Software

Table of Contents

  • SQL Implicit Cast of Character Strings and Numeric Values
  • Forcing Keyword Parameters
  • Admin Alert: Things to Think About in a Power i Development Environment

Content archive

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

Recent Posts

  • IBM Pulls The Curtain Back A Smidge On Project Bob
  • IBM Just Killed Merlin. Here’s Why
  • Guru: Playing Sounds From An RPG Program
  • A Bit More Insight Into IBM’s “Spyre” AI Accelerator For Power
  • IBM i PTF Guide, Volume 27, Number 42
  • What You Will Find In IBM i 7.6 TR1 and IBM i 7.5 TR7
  • Three Things For IBM i Shops To Consider About DevSecOps
  • Big Blue Converges IBM i RPG And System Z COBOL Code Assistants Into “Project Bob”
  • As I See It: Retirement Challenges
  • IBM i PTF Guide, Volume 27, Number 41

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