• 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
    New Generation Software

    A New Year, Big Goals, Exciting Projects.

    But What Do Your Users See?

    FREE Webinar

    It’s 2026. You have big plans for your IBM i environment – new technologies, methods, and languages. But what about your users? Are they still seeing reports and displays from outdated or unsupported query and reporting tools?

    See how NGS-IQ simplifies query, reporting, analytics, and data transfer tasks without requiring a consulting team or large budget.

    February 10, 2026, 11am Pacific/2pm Eastern

    RSVP: https://ngsi.news/NewYear

    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

  • Profound Says New Agentic AI Dev Tool Delivers Huge Productivity Boost
  • FalconStor Doubles Down On IBM Power With Habanero Offsite Data Protection
  • Guru: Taming The CRTSRVPGM Command – Options That Can Save Your Sanity
  • Izzi Taps Virtutem To Modernize Infor LX Environments With Valence
  • IBM i PTF Guide, Volume 28, Numbers 1 Through 3
  • 2025: An IBM i Year In Review
  • A Tale Of Two Server Markets
  • Guru: CRTSRVPGM Parameters That Can Save or Sink You
  • As I See It: What’s Past is Prologue
  • IBM i PTF Guide, Volume 27, Numbers 49 Through 52

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