• 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
    OCEAN User Group

    OCEAN TechCon25 Online

    It’s an Exciting Time for IBM i !

    July 16 & 17, 2025 – ONLINE

    Two virtual days of learning, presented by an outstanding group of IBM’ers and IBM Champions, featuring leading-edge topics.

    FREE for OCEAN members!

    Register NOW!

    Annual (12-month) Individual OCEAN Memberships are $80 and a Corporate Membership is $250. A Corporate Membership would allow your entire company to have full access to the OCEAN website & video library and to attend OCEAN events at member rates. Act now because rates are increasing on August 1, 2025.

    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

  • 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