24/11/15

Criando um Painel ISPF para o TSO

REXX (REstructured eXtended eXecutor) e uma lingua de programacao interpretada criada por r Mike Cowlishaw . Nas palavras de seu criador, REXX é uma linguagem de programação que foi desenvolvida para os usuários e não para a conveniência dos implementadores — aqueles que implementam compiladores e interpretadores. É uma linguagem estruturada de alto nível para ambiente de multi-plataforma, implementada através de versões comerciais ou livres desde desktops até em mainframes.

Para escrever teus codigos em Rexx, voce pode usar o ISPF edit ou o compilador do mesmo. Antes de comecar qualquer codigo em Rexx, use /* Rexx */ para indicar ao edit que voce esta programando em rexx.

DICA: Use hilite no edit do ISPF para colorir seu codigo (ajuda muuuito a identificar seu codigo)

Criando um Painel 

Para aprender a fazer um painel ISPF de um início de um scanner interativo porta REXX/ISPF foi criado o 'The PiNGeRaToR';



Script Completo

/* RExX */
/* trace t */
file_name = create_pds()
DO While file_name = 1
 file_name = create_pds()
END
ADDRESS ISPEXEC "LIBDEF ISPPLIB DATASET ID("file_name")"
ADDRESS ISPEXEC "DISPLAY PANEL(TEMP1)"
Do While RC = 0
   tgt = ip
   IF timeout = '' THEN tout = 10
   ELSE tout = timeout
   rc_out = OUTTRAP('ping.')
   address tso 'ping' tgt '(timeout' tout
   rc_out = OUTTRAP('OFF')
   IF rc = 0 then hp = 'THiS HoST iS ALiVe!'
   ELSE hp = 'THiS HoST iS DoWN, Yo :('
   ADDRESS ISPEXEC "DISPLAY PANEL(TEMP1)"
END
ADDRESS ISPEXEC "LIBDEF ISPPLIB DATASET ID()"
SAY "DeLeTiNG TeMP DaTaSeT"
"DELETE "file_name
EXIT
/* Create PDS Function */
create_pds:
  stem.0 = 26
  stem.1 = ')ATTR DEFAULT(%+_)'
  stem.2 = '% TYPE(TEXT) INTENS(HIGH) COLOR(RED) CAPS(OFF)'
  stem.3 = '+ TYPE(TEXT) INTENS(LOW) CAPS(OFF)'
  stem.4 = '_ TYPE(INPUT) INTENS(HIGH) CAPS(ON) JUST(LEFT)'
  stem.5 = '$ TYPE(INPUT) INTENS(LOW) PAD(_)'
  stem.6 = '! TYPE(OUTPUT) INTENS(LOW) COLOR(YELLOW)'
  stem.7 = ')BODY'
  stem.8 = '%-----------------------> ReXX PiNGeRaToR <---------------'
  stem.9 = '%COMMAND ===>_ZCMD'
  stem.10 = '%'
  stem.11 = '+'
  stem.12 = '+   iP/HoSTNaMe  .......$ip                            +'
  stem.13 = '+   PiNG TiMeouT .......$timeout+'
  stem.14 = '+'
  stem.15 = '+   TaRGeT  : !tgt'
  stem.16 = '+   TiMeouT : !tout'
  stem.17 = '+'
  stem.18 = '+'
  stem.19 = '+   !hp'
  stem.20 = '+'
  stem.21 = '+'
  stem.22 = ')INIT'
  stem.23 = '.HELP = TUTORPAN'
  stem.24 = ')REINIT'
  stem.25 = ')PROC'
  stem.26 = ')END'
  F = RANDOM(100,999)||RANDOM(100,999)
  FILE = "'"||USERID()||".T"||F
  sysin = SYSDSN(FILE||"'")
  IF (sysin^="OK") THEN
   DO
   "ALLOCATE DATASET("FILE"') CATALOG LRECL (80),
   BLKSIZE(27920) RECFM(F B) DSORG(PO) TRACKS SPACE(1 5) DIR(30)"
   "ALLOC FI(MYDD) DA("FILE"(TEMP1)') SHR REUSE"
   "EXECIO * DISKW MYDD (STEM STEM. FINIS"
   "FREE F(MYDD)"
   RETURN FILE||"'"
   END
  RETURN 1

Comigo funcionou somente assim, depois de logar no TSO saiu e em READ dou o nome do membro que criei dai consigo pesquisar o IP;
 READY
ping
 Enter host name or address
127.0.0.1
 CS V1R10: Pinging host 127.0.0.1
 Ping #1 response took 0.001 seconds.
 READY
ping
 Enter host name or address
192.1.200.1
 CS V1R10: Pinging host 192.1.200.1
 Ping #1 timed out
 READY










Fonte - Clique Aqui
Script - Clique Aqui

0 comentários:

Enviar um comentário