• The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
Menu
  • The Four Hundred
  • Subscribe
  • Media Kit
  • Contributors
  • About Us
  • Contact
  • CL’s Null Value

    April 19, 2006 Hey, Ted

    I am writing a CL program in which I pass variables to the Change User Profile (CHGUSRPRF) command. The command fails when I try to use a qualified name containing a single value like *SAME or *NONE. If I use one variable for the qualified parameter, *SAME and *NONE work, but the compiler won’t allow me to put both library name and program name into one variable. How can I pass qualified names that allow single values as variables to commands?

    –Brian

    Use two variables for the qualified name in your CHGUSRPRF command. When you need to use a single value, put CL’s null value, *N, in the part of the qualified name that doesn’t need a value.

    Here’s an example. Suppose you want to run the Display Job (DSPJOB) command in a CL program. There are two ways to tell which job you want to display: You can qualify the job by entering the job name, user, and job number, or you can use the single value * to indicate the current job.

    The following program accepts three parameters that indicate which job is to be displayed. If the first parameter, the job name, has the single value *, then the other two parts of the job identifier, name and number, do not need a value. For that reason, I place *N into the &USER and &JOBNBR variables. The same DSPJOB command works for both the single value and a qualified value.

    pgm parm(&inJob &inUser &inJobNbr)   
                                         
    dcl &inJob     *char  10             
    dcl &inUser    *char  10             
    dcl &inJobNbr  *char   6             
                                         
    dcl &Job       *char  10             
    dcl &User      *char  10             
    dcl &JobNbr    *char   6             
                                         
    chgvar &Job &inJob                   
    if (&inJob *eq '*') do              
       chgvar &User   '*N'              
       chgvar &JobNbr '*N'             
    enddo                              
    else do                            
       chgvar &User   &inUser          
       chgvar &JobNbr &inJobNbr        
    enddo                              
                                  
    dspjob job(&JobNbr/&User/&Job)
    

    Let’s complicate the example slightly by adding another qualified parameter-sort sequence. The Sort Sequence (SRTSEQ) parameter of the Change Job (CHGJOB) command can accept six single values or a qualified sort sequence table name. The following program changes the sort sequence for a job.

    pgm parm(&inJob &inUser &inJobNbr + 
             &inSortSeq &inSortLib)     
                                        
    dcl &inJob     *char  10            
    dcl &inUser    *char  10            
    dcl &inJobNbr  *char   6            
    dcl &inSortSeq *char  10            
    dcl &inSortLib *char  10            
                                        
    dcl &Job       *char  10            
    dcl &User      *char  10            
    dcl &JobNbr    *char   6            
    dcl &SortSeq   *char  10            
    dcl &SortLib   *char  10            
                                        
    chgvar &Job &inJob                  
    if (&inJob *eq '*') do              
       chgvar &User   '*N'              
       chgvar &JobNbr '*N'             
    enddo                              
    else do                            
       chgvar &User   &inUser          
       chgvar &JobNbr &inJobNbr        
    enddo                              
                                       
    chgvar &SortSeq &inSortSeq         
    if (&inSortSeq *eq '*SAME' +       
    *or &inSortSeq *eq '*USRPRF' +     
    *or &inSortSeq *eq '*SYSVAL' +     
    *or &inSortSeq *eq '*HEX' +        
    *or &inSortSeq *eq '*LANGIDUNQ' +  
    *or &inSortSeq *eq '*LANGIDSHR') do
       chgvar &SortLib '*N'            
    enddo                              
    else do                            
       chgvar &SortLib &inSortLib      
    enddo                                                   
                                                            
    chgjob job(&JobNbr/&User/&Job) srtseq(&SortLib/&SortSeq)
    

    If the first parameter is a single asterisk, the user and job number portions of the job parameter are loaded with *N. If the sort sequence, in the fifth parameter, is any of the single values, the sort table library name is given the value *N. The following text, cut from the job log, shows how the system interprets the CHGJOB command when single values are used.

    CHGJOB JOB(*) SRTSEQ(*LANGIDSHR)
    

    –Ted

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Tags:

    Sponsored by
    Manta Technologies

    The Leader in IBM i Education!
    Need training on anything i?
    Manta is all you need.

    130 courses and competency exams on:
    · IBM i operations
    · System Management and Security
    · IBM i Programming Tools
    · Programming in RPG, COBOL, CL, Java
    · Web Development

    SQL, DB2, QueryProduct features:
    · Runs in every popular browser
    · Available 24/7/365
    · Free Student Reference Guides
    · Free Student Administration
    · Concurrent User License
    · Built-In IBM i Simulator

    You can download our 200-page catalog and take sample sessions at MantaTech.com

    Share this:

    • Reddit
    • Facebook
    • LinkedIn
    • Twitter
    • Email

    Sponsored Links

    Maximum Availability:  Secure, cost-effective, real-time iSeries replication software solutions
    COMMON:  Join us at the Fall 2006 conference, September 17-21, in Miami Beach, Florida
    nuBridges:  Leading provider of secure FTP on the iSeries

    Job Posting Areas Created on the IT Jungle Forums ISVs React (Or Not) to PHP on the System i

    Leave a Reply Cancel reply

Volume 6, Number 16 -- April 19, 2006
THIS ISSUE SPONSORED BY:

T.L. Ashford
Advanced Systems Concepts
Bug Busters Software Engineering

Table of Contents

  • Where’s the Other MBROPT Option?
  • CL’s Null Value
  • Admin Alert: An Experimental Technique for Automatically Deleting User Profiles
  • Job Posting Areas Created on the IT Jungle Forums

Content archive

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

Recent Posts

  • EvolveWare Makes Progress With RPG Code Modernization Using AI
  • Why The IBM i Market Needed Another VTL Option
  • What Price Power?
  • Cloud Revenues Saved By The GenAI Boom
  • IBM i PTF Guide, Volume 27, Number 44
  • Power Systems Grows Nicely In Q3, Looks To Grow For All 2025, Too
  • Beta Of MCP Server Opens Up IBM i For Agentic AI
  • Sundry IBM i And Power Stack Announcements For Your Consideration
  • Please Take The IBM i Marketplace Survey
  • IBM i PTF Guide, Volume 27, Number 43

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