midrange.com code scratchpad
Name:
enquote() to enquote a string in an ILE program - Dennis Lovelady
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
04/17/2012 09:47:15 pm
IP:
Logged
Description:
Take an input string, and enquote it suitably for use within a System i command
Code:
  1.      P Enquote         B                   Export
  2.      D Enquote         PI         32767    Varying
  3.       * Enclose a string in apostrophes, providing double apostrophe
  4.       * where apost currently exists
  5.      D  StringIn                  32767    Value Varying
  6.      D  ParmTrimL                      N   Value Options(*NoPass)
  7.      D  ParmTrimR                      N   Value Options(*NoPass)
  8.  
  9.      D TrimLeft        S               N   Inz(*Off)
  10.      D TrimRight       S               N   Inz(*On)
  11.      D P               S              5U 0
  12.      D WorkString      S                   Like(StringIn)
  13.  
  14.      D APOST           C                   ''''
  15.       /Free
  16.  
  17.        If %Parms >= 2 ;
  18.           TrimLeft = ParmTrimL ;
  19.           If %Parms >= 3 ;
  20.              TrimRight = ParmTrimR ;
  21.           EndIF ;
  22.        EndIF ;
  23.        Select ;
  24.           When TrimLeft and TrimRight ;
  25.              WorkString = %Trim(StringIn) ;
  26.           When TrimLeft ;
  27.              WorkString = %TrimL(StringIn) ;
  28.           When TrimRight ;
  29.              WorkString = %TrimR(StringIn) ;
  30.           Other ;
  31.              WorkString = StringIn ;
  32.        EndSL ;
  33.  
  34.        P = %Scan(APOST: WorkString) ;
  35.        DoW P > *Zero and P <= %Len(WorkString) ;
  36.           WorkString = %Replace(APOST+APOST: WorkString: P: 1) ;
  37.           P += 2 ;
  38.           If P <= %Len(WorkString) ;
  39.              P = %Scan(APOST: WorkString: P) ;
  40.           EndIF ;
  41.        EndDO ;
  42.        Return APOST + WorkString + APOST ;
  43.  
  44.       /End-free
  45.      P Enquote         E
  46.  
© 2004-2019 by midrange.com generated in 0.005s valid xhtml & css