• 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
    Rocket Software

    Software built on TRUST. Delivered with LOVE.

    For over 35 years, Rocket Software’s solutions have empowered businesses to modernize their infrastructure, unlock data value, and drive transformation – all while ensuring modernization without disruption.

    Learn More

    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

  • The Power11 Transistor Count Discrepancies Explained – Sort Of
  • Is Your IBM i HA/DR Actually Tested – Or Just Installed?
  • Big Blue Delivers IBM i Customer Requests In ACS Update
  • New DbToo SDK Hooks RPG And Db2 For i To External Services
  • IBM i PTF Guide, Volume 27, Number 33
  • Tool Aims To Streamline Git Integration For Old School IBM i Devs
  • IBM To Add Full System Replication And FlashCopy To PowerHA
  • Guru: Decoding Base64 ASCII
  • The Price Tweaking Continues For Power Systems
  • IBM i PTF Guide, Volume 27, Numbers 31 And 32

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