• 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
    Cobalt Iron

    Smarter Data Protection with Cobalt Iron Compass

    Compass is the intelligent, cyber-secure data protection platform that supports all your workloads:

    • Cloud
    • On-premises
    • Hybrid

    Automate backup, outsmart ransomware, and scale effortlessly with a modern SaaS solution.  Compass delivers analytics-driven resilience built for ALL workloads – including IBM Power and IBM i.

    Modern protection.  Simplified delivery.  Try it free for 30 days.

    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

  • Stacking Up Power10 And Power11 Systems Price/Performance
  • Where Infor Is Headed With Its ERPs For IBM i
  • Rocket Delivers More DevOps Capabilities For IBM i
  • A Few More Power Systems Announcements Before Year End
  • IBM i PTF Guide, Volume 27, Number 46
  • Bang For The Buck On Entry Power10 And Power11 Machines
  • A Hardware Refresh Is The Perfect Time To Re-Evaluate Your HA/DR Strategy
  • Fresche Taps AI For New RPG-To-Java Conversion Tool
  • Gartner Raises 2025 IT Spending Forecast, Puts Out 2026 Prediction
  • IBM i PTF Guide, Volume 27, Number 45

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