code

Name
Astradyne (UK) Ltd
Scriptlanguage
Plain Text
Tabwidth
4
Date
Sun, 12 May 2013 15:01:35 +0000
IP
192.168.0.1

You can call a program without passing the expected number of parameters by using the %PARMS built-in function in the called program and using it to determine which parameters (if any) were passed. The trick is to only refer to the parameter variable if it was passed otherwise you will get a pointer/resolve error. To do this, define work variables that will be populated with the parameter values by your program and refer to these in the rest of your code.

  1.     D* Program Parameters                               
  2.     D pCompany        s              3a                 
  3.     D pDivision      s              3a                 
  4.     D pAccount        s            10a                 
  5.                                                          
  6.     D* Work Fields                                     
  7.     D wCompany        s              3a                 
  8.     D wDivision      s              3a                 
  9.     D wAccount        s            10a                 
  10.     D wMode          s            10a                 
  11.                                                          
  12.     C* Entry Parameters...                             
  13.     C    *Entry        PList                           
  14.     C                  Parm                    pCompany
  15.     C                  Parm                    pDivision
  16.     C                  Parm                    pAccount
  17.                                                          
  18.     C* Check for passed parameters...                   
  19.     C                  Select                         
  20.                                                        
  21.     C*  1) No parameters passed...                   
  22.     C                  When      %Parms = 0         
  23.     C                  Eval      wCompany  = *Blanks 
  24.     C                  Eval      wDivision = *Blanks 
  25.     C                  Eval      wAccount  = *Blanks 
  26.                                                        
  27.     C*  2) One parameter passed...                   
  28.     C                  When      %Parms = 1         
  29.     C                  Eval      wCompany  = pCompany
  30.     C                  Eval      wDivision = *Blanks 
  31.     C                  Eval      wAccount  = *Blanks 
  32.                                                        
  33.     C*  3) Two parameters passed...                 
  34.     C                  When      %Parms = 2         
  35.     C                  Eval      wCompany  = pCompany
  36.     C                  Eval      wDivision = pDivision
  37.     C                  Eval      wAccount  = *Blanks 
  38.                                                        
  39.     C*  4) All parameters passed...                 
  40.     C                  When      %Parms = 3         
  41.     C                  Eval      wCompany  = pCompany
  42.     C                  Eval      wDivision = pDivision
  43.     C                  Eval      wAccount  = *Blanks 
  44.                                                        
  45.     C                  EndSl
  46.