Vous êtes sur la page 1sur 4

1) PGM1

-----------------------------------------------------------------------------------------/******************REXX******************/
SAY "HI,WHAT'SOUR NAME?";PULL NAME
IF NAME="" THEN
SAY "INVALID NAME" /*NAME MUST BE THERE*/
ELSE
SAY "WELCOME" NAME

2)PGM2
------------------------------------------------------------------------------------------/******************REXX******************/
PROBLEM="8 4 0 * 2 + +"
DO WHILE PROBLEM \=""
PARSE VAR PROBLEM ITEM PROBLEM
IF DATATYPE(ITEM)=NUM THEN
PUSH ITEM
ELSE
DO
PULL NUM1
PULL NUM2
INTERPRET "PUSH" NUM1 ITEM NUM2
END
END
PULL ANSWER
SAY ANSWER

3) PGM3
-----------------------------------------------------------------------------------------/*******************REXX*************************/
"ALLOC F(TEST) OLD DS('VAGGARW.TEST.DATASET')"
"EXECIO 1 DISKRU TEST 1"
PARSE PULL LINE
SAY LINE
LINE1 = LEFT(LINE,5)
LINE2 = "IT"
LINE3 = RIGHT(LINE,143)
NEWLINE = LINE1||LINE2||LINE3
PUSH NEWLINE
"EXECIO 1 DISKW TEST"
"EXECIO 0 DISKW TEST (FINIS"
"FREE F(TEST)"

4)PGM4
-------------------------------------------------------------------------------------------

/************REXX****************/
PARM = '2005-02-282005-03-082005-02222005-01-312005-02-012005-02-27NNN'
CALL SUB_JCL PARM
SUB_JCL:PROCEDURE
PARSE ARG PARM
"ISPEXEC LIBDEF ISPSLIB DATASET ID('VAGGARW.TEST.JCLLIB')"
"ISPEXEC FTOPEN TEMP"
"ISPEXEC FTINCL REXPGM1"
"ISPEXEC FTCLOSE"
"ISPEXEC VGET (ZTEMPF) SHARED"
"SUBMIT '"ZTEMPF"'"
EXIT 0

5) DATE CONVERSION
-----------------------------------NEXT_DATE_RTN: PROCEDURE
PARSE ARG NEXT_DATE
DATE_U = TRANSLATE('56/78/34',NEXT_DATE,'1234-56-78')
DATE_B = DATE('B',DATE_U,'U')
DATE_B1 = DATE_B +1
DATE_U1 = DATE('U',DATE_B1,'B')
NEXT_DATE = TRANSLATE('2034-56-78',DATE_U1,'56/78/34')
RETURN NEXT_DATE
/*************REXX*****************/
DATE_A = TRANSLATE('2005-04-30','','-')
SAY 'STANDARD' DATE_A
PARSE VAR DATE_A YYYY MM DD
DATE_S = YYYY||MM||DD
SAY DATE_S
DATE_B = DATE('B',DATE_S,'S')
SAY 'US DATE' DATE_B
DATE_NEXT = DATE_B + 1
SAY 'DATE_NEXT' DATE_NEXT
DATE_S = DATE('S',DATE_NEXT,'B')
SAY DATE_S
EXIT

6) DYNAMIC AREA PANEL


----------------------------------------------------)ATTR
@ AREA(DYNAMIC) SCROLL(ON) EXTEND(ON)
01 TYPE(DATAOUT) COLOR(RED)
02 TYPE(DATAOUT) COLOR(BLUE)
03 TYPE(DATAOUT) COLOR(GREEN)
04 TYPE(DATAOUT) COLOR(WHITE)

$ TYPE(TEXT)
COLOR(YELLOW)
)BODY
%------------ EXAMPLE FOR USING A DYNAMIC AREA ---------------------%
%COMMAND ===>_ZCMD
%SCROLL ===>_AMT +
%
+ THIS AREA IS FIXED. SIZE: &SIZE
+
+ THIS IS AN INPUT FIELD%===>_SOMEVAR +
+
+THIS IS EXTENDABLE @DYNAREA
@
$THIS SHOULD BE AT THE BOTTOM OF THE SCREEN WHEN IN FULL SCREEN.
)END
7)DYNAMIC AREA PROGRAM
-------------------------------------------------------/* REXX - DYNAMIC AREA EXAMPLE */
"ISPEXEC LIBDEF ISPPLIB DATASET ID('RSARIN.OR.REXX.EXEC')"
ADDRESS ISPEXEC
/* CALLS GO TO ISPF
*/
RED = '01'X
/* ASSIGN COLORS TO
*/
BLUE = '02'X
/* ATTRIBUTE BYTES
*/
GREEN = '03'X
/* FOUND IN THE DATA
*/
WHITE = '04'X
MAXLINES = 600
/* SET MAX NUMBER OF LINES*/
DYNDATA = ''
/* INITIALIZE DATA
*/
DO A = 1 TO MAXLINES BY 3
/* CREATE SOME DUMMY DATA */
DYNDATA=DYNDATA||WHITE||LEFT('THIS IS'RED ||'RED 'WHITE||A , 29)
DYNDATA=DYNDATA||WHITE||LEFT('THIS IS'BLUE ||'BLUE 'WHITE||A+1, 29)
DYNDATA=DYNDATA||WHITE||LEFT('THIS IS'GREEN||'GREEN'WHITE||A+2, 29)
END
/*
ADD A BOTTOM OF DATA MAKER TO THE END OF THE DATA
*/
DYNDATA = DYNDATA||BLUE||CENTRE(GREEN||'BOTTOM'||BLUE,29,'*')
CURLINE = 1;

/* SET CURRENT LINE #

*/

/*-------------------------------------------------------------------*/
/* DISPLAY LOOP UNTIL END OR ERROR
*/
/*-------------------------------------------------------------------*/
DO UNTIL DISPRC > 0
DYNAREA = SUBSTR(DYNDATA,1+(CURLINE-1)*30) /* SET DYNAMIC VARIABLE */
SIZE = LENGTH(DYNAREA)
/* SET A SCALAR VARIABLE */
'ISPEXEC DISPLAY PANEL(DYNAREAP)'
/* DISPLAY THE DATA
*/
DISPRC = RC
/* SAVE RETURN CODE
*/
'ISPEXEC VGET (ZVERB,ZSCROLLA,ZSCROLLN)' /* GET SCROLL VALUES
*/
SELECT
/* PROCESS SCROLLING
*/
WHEN(ZVERB = 'UP') THEN
/* SCROLL UP
*/
IF ZSCROLLA = 'MAX' THEN
/* IF SCROLL WAS MAX
*/
CURLINE = 1
/*
SCROLL TO TOP
*/
ELSE
/* ELSE A NUMBER IS KNOWN*/
CURLINE = MAX(1,CURLINE-ZSCROLLN); /* (MAXIMUM IS TOP)
*/
WHEN(ZVERB = 'DOWN') THEN
/* SCROLL DOWN
*/
IF ZSCROLLA = 'MAX' THEN
/* IF SCROLL WAS MAX
*/
CURLINE = MAXLINES
/*
SCROLL TO BOTTOM
*/
ELSE
/* ELSE A NUMBER IS KNOWN*/
CURLINE = MIN(MAXLINES,CURLINE+ZSCROLLN); /* (MAX IS BOTTOM) */
OTHERWISE;
/* COULD USE LEFT & RIGHT TOO
*/
END
END
/* END OF DISPLAY LOOP
*/

Pgm to call an skeleton jcl


-----------------------------------------------------------------/************REXX****************/
"ISPEXEC LIBDEF ISPPLIB DATASET ID('TSYS.OR.REXX.TEST.PANELS')"
"ISPEXEC LIBDEF ISPSLIB DATASET ID('TSYS.OR.REXX.TEST.SKELS')"
OTMSGP1A = 'ENTER THE FOLLOWING VALUES FOR OPENING/CLOSING FILE'
OTMSGP1D = 'PROCEED'
OTMSGP1C = ' '
"ISPEXEC DISPLAY PANEL (FILEPANP)"
DO FOREVER
IF VARRES1=END THEN DO
"ISPEXEC ADDPOP"
OUTMSG = 'EXITING FROM THE PANEL'
"ISPEXEC DISPLAY PANEL (EXITPANP)"
IF VARRESPU=ENTER THEN DO
"ISPEXEC REMPOP"
RETURN 1
END
ELSE IF VARRESPU=END THEN DO
"ISPEXEC REMPOP"
"ISPEXEC DISPLAY"
END
END
IF VARRES1=ENTER THEN DO
LEAVE
END
END
IF OPTN = 1 THEN DO
IND = A
END
IF OPTN = 2 THEN DO
IND = D
END
CALL SUB_JCL ENV RGN IND DDNM SUBOPT
SUB_JCL:PROCEDURE
PARSE ARG ENV RGN IND DDNM SUBOPT
"ISPEXEC FTOPEN TEMP"
"ISPEXEC FTINCL ONLNSKEL"
"ISPEXEC FTCLOSE"
"ISPEXEC VGET (ZTEMPF) SHARED"
IF SUBOPT = 'Y' THEN
"SUBMIT '"ZTEMPF"'"
ELSE
"ISPEXEC EDIT DATASET('"ZTEMPF"')"
EXIT 0

Vous aimerez peut-être aussi