/* REXX *** */ PARSE ARG date /* INPUT is DATE expressed in ESP-compatible format */ /* Examples: 23 MAR 91 */ /* MAR 23 91 */ /* 91/03/23 */ /* 91.082 */ /* TODAY LESS 2 WEEKS */ /* CHRISTMAS */ /* 1ST MONDAY OF OCTOBER */ /* OUTPUT is DATE in human format */ PARSE SOURCE tso envir rest /* determine environment */ /* USE as a function: xx = INTDATE(string) */ /* USE as a command : INTDATE text */ /* CAPTURE OUTPUT FROM ESP COMMAND */ x = OUTTRAP('esp.',40,'NOCONCAT') /* CREATE INPUT FOR ESP COMMAND */ 'NEWSTACK' QUEUE 'TEST 'date QUEUE 'END' ADDRESS TSO 'ESP' 'DELSTACK' /* EXTRACT OUTPUT FROM ESP COMMAND */ DO i = 1 to esp.0 SELECT /* discard prompts if present */ WHEN SUBSTR(esp.i,1,3) = '-->' then NOP /* if unexpected response, return error */ WHEN SUBSTR(esp.i,1,2) < '00' then DO IF envir = 'FUNCTION' then RETURN -1 else SAY esp.i EXIT 0 END OTHERWISE DO /* parse response => hh.mm.ss weekday month ddTH, yyyy, DAY ddd */ PARSE VAR esp.i time weekday mm day year fill jjj yyyy = STRIP(year,,',') jd = weekday mm day yyyy /* returned value = weekday month ddTH, yyyy */ IF envir = 'FUNCTION' then RETURN jd else SAY jd EXIT 0 END END END i /* if unexpected response, return error */ IF envir = 'FUNCTION' then RETURN -1 else SAY 'Unexpected result received from ESP command' EXIT 0