RXMON

RXMON
RXMON Screen

RXMON Screenshot

RXMON Screenshot
RXE (a editor)

domingo, 20 de julho de 2008

Tools

RXMEM Rexx package
A new package to manage linked list in REXX language. There are a couple functions to manage lists, like, add an item to end of list, insert an item between items, remove an item from list, load from stem variable, save to stem variable, to manage a token pair feature from MVS and obtain/release memory.

An example :

Linked list sample :

/* REXX */
"ISPEXEC LIBDEF ISPLLIB DATASET ID ('DFGAETA.LOAD') UNCOND"
SAY 'CREATING TWO LINKED LISTS'
RC=RXMEM('CREATE','L1')
RC=RXMEM('CREATE','L2')
SAY 'ADDING TO END OF LIST'
DO I=1 TO 15
RC=RXMEM('ADD','L1','ITEMS IN LIST L1 #'I)
END
SAY 'ADDING TO END OF LIST USING STEM VARIABLE'
L2.1='ITEM CREATED IN STEM L2 #1'
L2.2='ITEM CREATED IN STEM L2 #2'
L2.3='ITEM CREATED IN STEM L2 #3'
L2.4='ITEM CREATED IN STEM L2 #4'
L2.5='ITEM CREATED IN STEM L2 #5'
L2.6='ITEM CREATED IN STEM L2 #6'
A=RXMEM('LOADSTEM','L2',D2C(1,4),D2C(6,4))
SAY 'COUNTING ITEMS IN LINKED LIST'
SAY 'ITEMS IN L1='RXMEM('COUNT','L1')
SAY 'ITEMS IN L2='RXMEM('COUNT','L2')
SAY 'LISTING L1 LINKED LIST'
DO I=1 TO RXMEM('COUNT','L1')
SS=STRIP(RXMEM('GET','L1',D2C(I,4)),'T')
SAY 'ITEM #'I' STR='SS
END
SAY 'LISTING L2 LINKED LIST'
DO I=1 TO RXMEM('COUNT','L2')
SS=STRIP(RXMEM('GET','L2',D2C(I,4)),'T')
SAY 'ITEM #'I' STR='SS
END
SAY 'DELETING SOME ITEMS FROM L2'
A=RXMEM('DEL','L2',D2C(2,4))
SAY 'LISTING L2 LINKED LIST AFTER DELETE ACTION'
DO I=1 TO RXMEM('COUNT','L2')
SS=STRIP(RXMEM('GET','L2',D2C(I,4)),'T')
SAY 'ITEM #'I' STR='SS
END
SAY 'DELETING SOME ITEMS FROM L2'
A=RXMEM('DEL','L2',D2C(4,4))
SAY 'LISTING L2 LINKED LIST AFTER DELETE ACTION'
DO I=1 TO RXMEM('COUNT','L2')
SS=STRIP(RXMEM('GET','L2',D2C(I,4)),'T')
SAY 'ITEM #'I' STR='SS
END
SAY 'INSERTING TWO ELEMENTS TO L1'
A=RXMEM('INS','L1',D2C(3,4),'ADDITIONAL ITEM #1')
A=RXMEM('INS','L1',D2C(4,4),'ADDITIONAL ITEM #2')
DO I=1 TO RXMEM('COUNT','L1')
SS=STRIP(RXMEM('GET','L1',D2C(I,4)),'T')
SAY 'ITEM #'I' STR='SS
END
A=RXMEM('DESTROY','L1')
A=RXMEM('DESTROY','L2')
EXIT

Obtain/Release memory :


/* REXX */
"ISPEXEC LIBDEF ISPLLIB DATASET ID ('DFGAETA.LOAD') UNCOND"
ADDR=C2X(RXMEM('OBTAIN',D2C(2048,4)))
SAY 'STORAGE OBTAIN ='ADDR
SAY 'MOVING TO ADDRESS'
XZ=STORAGE(ADDR,20,'1234567890ABCDEFGHIJ')
SAY 'LOADING FROM ADDRESS'
SAY STORAGE(ADDR,20)
SAY 'STORAGE RELEASE ='RXMEM('RELEASE',X2C(ADDR),D2C(2048,4))
EXIT

A token-pair feature :


/* REXX */
"ISPEXEC LIBDEF ISPLLIB DATASET ID ('DFGAETA.LOAD') UNCOND"
AA=RXMEM('TKCRT','PAIR1 DATA ONE ')
/* 12345678901234561234567890123456 */
AA=RXMEM('TKCRT','PAIR2 DATA TWO ')
/* 12345678901234561234567890123456 */
SAY 'PAIR1=' RXMEM('TKRTV','PAIR1 ')
SAY 'PAIR2=' RXMEM('TKRTV','PAIR2 ')
EXIT


Powerful JCL Preprocessor
This is my favorite tool. RXJCL is a preprocessor to expand cards from JCL, before a JES submission.
It is powerful to build JCL usings REXX variables, expressions and macro procedures.

Example :

In this example, we have a JCL using %%SCAN macro expansion and %%REPEAT-%%EREPEAT command. All %% strings will be processed by RXJCL.

//* %%OUT LST
//JOBTST JOB (ACCT),CLASS=A
//STEP01 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
//* %%SCAN DSN TEST.CT.** LSTDSN
//* %%REPEAT LSTDSN.0 IDX
DELETE %%(LSTDSN.IDX) NONVSAM
//* %%EREPEAT

In summary, it can be a excelent tool for Production procedures, like as dataset movements, PDS members process, JCL builds using PDS directory, datasets from catalog, records from sequential datasets...

Rexx Frontends for TERSE and UNTERSE

This is a tool to manage a frontend to TRSMAIN utility.
There are two REXXs, for terse and unterse processes. It can be used in ISPF 3.4 option, directly in dataset line, in prefix/command area.

The key point is unterse process, it get a DCB from tersed dataset and allocate an output dataset using it.


Fullscreen interface using REXX without ISPF
RX3270 is a fullscreen interface to use with REXX language.

It uses TPUT and TGET macros and is a good tool to make fullscreens using 3207 datastream.

It works with two areas, an input area with datastream and an output area with inputed data besides an additional area with expcetion key, like PFxx, PAx, ENTER or CLEAR.

I am using IKCT441 service to manage REXX/CLIST variables using external languages. A good sample for who is researching about it.


Interface to SMP GIMAPI using REXX
RXGIMAPI is just a interface to use GIMAPI (SMP/E) with REXX language.

I used IKTCT441 service to build parameters through rexx variables.

RXGIMP will process output using SYSPRINT ddname under TSO/F or batch.




(Obs. Please, look at http://www.cbttape.org/ , maintened by Sam Golob and others)

Red Monster! Across any place!

Red Monster! Across any place!

My sister... Rafting moment

My sister... Rafting moment

Perfect day... Night rafting

Perfect day... Night rafting

Still a perfect day...

Still a perfect day...

A fun moment

A fun moment

Happy couple!

Happy couple!

Wife, mother and sister

Wife, mother and sister

My brother-in-law

My brother-in-law

Making X-Burgers with my father

Making X-Burgers with my father

My paradise....

My paradise....

My paradise

My paradise

The BIG GRANDMA!

The BIG GRANDMA!

My parents... A long long marriage!

My parents... A long long marriage!

Wife and my godparents!

Wife and my godparents!

Gaeta's couple duet

Gaeta's couple duet

Personal

Personal
Enjoying the life!

Teaching...

Teaching...
Teaching my dog to go for a swim