Now some further examples for using the PARSE instruction. By the way: The best method to learn about PARSE is using REXXTRY (better yet, EREXXTRY) to test it. Double-Click on to call REXXTRY right now.
Further examples of using PARSE:
/* ----- PARSE the contents of a variable --------------------------- */
/* use PARSE VAR */
testVariable = "1part 2part 3part"
parse var testVariable resultStr1 resultStr2 resultStr3
/* result: */
/* -> resultStr1 = "1part", resultStr2 = "2part" and */
/* resultStr3 = "3part" */
/* use PARSE VALUE */
testVariable = "1part 2part 3part"
parse value testVariable WITH resultStr1 resultStr2 resultStr3
/* result: */
/* -> resultStr1 = "1part", resultStr2 = "2part" and */
/* resultStr3 = "3part" */
/* ----- PARSE the result of a function ----------------------------- */
/* use PARSE VALUE */
parse value SysTextScreenSize() WITH cols rows
/* use PARSE VAR */
textScreenSize = SysTextScreenSize()
parse var textScreenSize WITH cols rows
/* ------ PARSE the date into day, month and year ------------------- */
/* All examples assume a date in the American format (mm/dd/yy)! */
/* parse with string pattern */
parse value date( "U" ) WITH month "/" day "/" year
/* result: */
/* -> day = "08", month = "01" and year = "96" if the current */
/* date is 08 Jan 1996 */
/* parse with string pattern, ignore the */
/* month and year */
parse value date( "U" ) WITH . "/" day "/" .
/* or */
parse value date( "U" ) WITH "/" day "/"
/* parse with variable string pattern */
separator = "/"
parse value date( "U" ) WITH month (separator) day (separator) year
/* parse with variable string pattern */
/* The separator character is part of the */
/* source. It is saved in the variable */
/* "separator" and used with */
/* "(separator)". */
parse value date( "U" ) WITH month 3 separator 4 day (separator) year
/* absolute positional parsing */
parse value date( "U" ) WITH month 3 4 day 6 7 year
/* absolute positional parsing with */
/* changed parse order */
parse value date( "U" ) WITH 7 year 1 month 3 4 day 6 .
/* absolute positional parsing, ignore */
/* the month and year */
parse value date( "U" ) WITH 4 day 6
/* relative positional parsing */
parse value date( "U" ) WITH month +2 +1 day +2 +1 year
/* relative positional parsing */
/* with changed parse order */
parse value date( "U" ) WITH 4 day +2 +1 year +2 -8 month +2
/* relative positional parsing */
/* ignore the month and year */
parse value date( "U" ) WITH +3 day +2
/* ------ PARSE the date into day, month and year (all formats) ----- */
/* dateVar may contain something like "01.04.95" (European) or */
/* "04/01/95" (US) */
if dateFormat = "US" then
do
/* US date format is mm/dd/yy */
monthPos = 1; dayPos = 4; yearPos = 7
end /* if */
else
do
/* European date format is dd/mm/yy */
monthPos = 4; dayPos = 1; yearPos = 7
end /* else */
parse var dateVar =(dayPos) day +2 ,
=(monthPos) month +2 ,
=(yearPos) year +2
See the section Hints for PARSEing for further hints for the PARSE instruction.
Note: For a complete description of the PARSE instruction see IBM: OS/2 2.0 Procedures Language/2 Reference Manual.