Visualize a seguinte circunstância: você deseja ser notificado por e-mail sempre que a utilização do SMF atingir ou ultrapassar a marca de 50%. Essa demanda foi apresentada como um desafio a ser solucionado, e, com a colaboração de uma colega de trabalho, foi desenvolvido um programa Natural acompanhado de um JCL para abordar essa necessidade específica. Quando o JCL é executado e a taxa de utilização do SMF alcança ou excede os 50%, automaticamente, uma notificação por e-mail é enviada para a caixa de correio da equipe do Centro de Processamento de Dados (CPD).
O programa Natural desempenha um papel crucial nesse contexto, pois é responsável por filtrar e avaliar as condições estabelecidas para a notificação. Essa solução não apenas automatiza o processo, tornando-o eficiente e preciso, mas também oferece uma maneira proativa de gerenciar e monitorar a utilização do SMF, garantindo que a equipe seja alertada prontamente sempre que a porcentagem desejada for atingida ou ultrapassada. Essa abordagem integrada demonstra como a colaboração e a implementação de soluções customizadas podem aprimorar a eficiência e a capacidade de resposta em ambientes operacionais.
O programa Natural pra fazer este filtro foi esse:
Esses foram os datasets que vamos usar, coisa pequena, só para pegar os comandos do D SMF e processar via programa Natural.
Este foi o JCL que foi usado para checar o SMF e enviar um e-mail se ele estiver igual ou maior que 50%
Este é o e-mail que o pessoal do CPD vão receber:
O programa Natural pra fazer este filtro foi esse:
> + Program AAFSCSMF Lib SUPORTE2
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 ** ----------------------------------------------------------------
0020 ** PROCEDIMENTO : FAZ UM FILTRO DO SMF RELATORIO % ATUAL
0030 ** AUTOR : CLAUDEMAR MARTINS/KATIA UETI
0040 ** DATA : 03/02/2020
0050 ** ----------------------------------------------------------------
0060 DEFINE DATA LOCAL
0070 1 #CONT (A04)
0080 1 #SMF1 (A88)
0090 1 REDEFINE #SMF1
0100 2 FILLER 13X
0110 2 #NOME_SMF (A09)
0120 2 FILLER 1X
0130 2 #VOLSER (A06)
0140 2 FILLER 1X
0150 2 #SIZE (A10)
0160 2 FILLER 1X
0170 2 #FULL (A5)
0180 2 FILLER 1X
0190 2 #STATUS (A9)
0200 ****
0210 1 #SMF2 (A88)
0220 1 REDEFINE #SMF2
0230 2 FILLER 13X
0240 2 #NOME_SMF_2 (A09)
0250 2 FILLER 1X
0260 2 #VOLSER_2 (A06)
0270 2 FILLER 1X
0280 2 #SIZE_2 (A10)
0290 2 FILLER 1X
0300 2 #FULL_2 (A05)
0310 2 FILLER 1X
0320 2 #STATUS_2 (A09)
0330 **
0340 1 #ERRO-TST (N03)
0350 1 #NOME-TST (A09)
0360 1 #PERC-TST (A05)
0370 1 REDEFINE #PERC-TST
0380 2 #PERC-TST-NUM (N05)
0390 **
0400 END-DEFINE
0410 * ---------------------------------------------------------------
0420 READ WORK FILE 1 #SMF1 #CONT
0430 IF #NOME_SMF = 'SYS1.MAN1' OR = 'SYS1.MAN2' OR = 'SYS1.MAN3'
0440 ** AND #FULL >= ' 1 '
0450 AND #FULL >= ' 50 '
0460 AND #STATUS = 'ACTIVE '
0470 * ---------------------------------------------------------------
0480 * CALLNAT 'AAFTSMF1'
0490 * ---------------------------------------------------------------
0500 MOVE #NOME_SMF TO #NOME_SMF_2
0510 MOVE #VOLSER TO #VOLSER_2
0520 MOVE #SIZE TO #SIZE_2
0530 MOVE #FULL TO #FULL_2
0540 MOVE #STATUS TO #STATUS_2
0550 * ---------------------------------------------------------------
0560 WRITE WORK FILE 2 #SMF2
0570 * ---------------------------------------------------------------
0580 MOVE #NOME_SMF TO #NOME-TST
0590 MOVE RIGHT JUSTIFIED #FULL TO #PERC-TST
0600 EXAMINE FULL #PERC-TST ' ' REPLACE WITH '0'
0610 * ---------------------------------------------------------------
0620 END-IF
0630 END-WORK
0640 **
0650 IF #NOME-TST = 'SYS1.MAN1' OR = 'SYS1.MAN2' OR = 'SYS1.MAN3'
0660 AND #PERC-TST-NUM >= 50
0670 ADD 1003 TO #ERRO-TST
0680 END-IF
0690 **
0700 END
....+....1....+....2....+....3....+....4....+....5....+... S 70 L 41
Esses foram os datasets que vamos usar, coisa pequena, só para pegar os comandos do D SMF e processar via programa Natural.
MEMBER=IEFBR14J 000016 REC SAVE:06.11.2020 22:37 BY USERID DBA005 R=00000001
DSN=AAB.DIBD.JCLS LIB=S3 VOL=PRL303 UNIT=1526
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AABSBR14 JOB (AABS,DIBD),CLAUDEMAR,CLASS=S,MSGCLASS=A,TYPRUN=HOLD
//*UQ ALLOW
//* ------------------------------------------------------------
//* CRIAR ARQUIVO NO MAINFRAME
//* ------------------------------------------------------------
//IEFBR14 EXEC PGM=IEFBR14
//SYSUT1 DD DSN=AAF.S.CSASMF1,DISP=(,CATLG,DELETE),
// VOL=SER=PRD302,SPACE=(TRK,(3,1)),UNIT=SYSDA,
// DCB=(LRECL=133,BLKSIZE=1330,RECFM=FBA)
//*
//SYSUT2 DD DSN=AAF.S.CSASMF2,DISP=(,CATLG,DELETE),
// VOL=SER=PRD302,SPACE=(TRK,(3,1)),UNIT=SYSDA,
// DCB=(LRECL=133,BLKSIZE=1330,RECFM=FBA)
//*
//SYSUT3 DD DSN=AAF.S.CSASMF3,DISP=(,CATLG,DELETE),
// VOL=SER=PRD302,SPACE=(TRK,(3,1)),UNIT=SYSDA,
// DCB=(LRECL=133,BLKSIZE=1330,RECFM=FBA)
//*
Este foi o JCL que foi usado para checar o SMF e enviar um e-mail se ele estiver igual ou maior que 50%
MEMBER=AAFSNSMF 000065 REC SAVE:26.11.2020 20:45 BY USERID DBA005 R=00000001
DSN=PROD.USER.JCLS LIB=PS VOL=PRL301 UNIT=1524
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
//AAFSNSMF JOB (AAF,TSS),CLAUD,CLASS=S,MSGCLASS=Z,USER=AAUSER1
//*UQ ALLOW
//* ----------------------------------------------------------------
//* CHECANDO % DO SMF E ENVIANDO POR EMAIL - FUNCIONANDO
//* ----------------------------------------------------------------
//SDSF EXEC PGM=SDSF
//ISFOUT DD DSN=AAF.S.CSASMF1,DISP=SHR
//ISFIN DD *
SET CONSOLE BATCH
SET DELAY 600
ULOG
/D SMF
END
//* ----------------------------------------------------------------
//* FILTRO NATURAL - PEGANDO OS DATASETS DO SMF
//* ----------------------------------------------------------------
//NATD EXEC NATURAL,PARM1='SYS=P,MT=0,STACK=(LOGON SUPORTE2)'
//CMWKF01 DD DSN=AAF.S.CSASMF1,DISP=SHR
//CMWKF02 DD DSN=AAF.S.CSASMF2,DISP=SHR
//SYSOUT DD SYSOUT=Z
//SYSPRINT DD SYSOUT=Z
//CMPRT01 DD SYSOUT=Z
//CMPRINT DD SYSOUT=Z
//SYSIN DD *
AAFSCSMF
//* --------------------------------------------------------
//* COPIANDO O ARQUIVO PARA OUTRO DATASET
//* --------------------------------------------------------
//GRAVA1 EXEC PGM=ICEGENER
//SYSPRINT DD SYSOUT=Z
//SYSUT1 DD DSN=AAF.S.CSASMF2,DISP=MOD
//SYSUT2 DD DSN=AAF.S.CSASMF3,DISP=SHR
//SYSIN DD DUMMY
//* --------------------------------------------------------
//SMTP1 EXEC PGM=ICEGENER
//SYSPRINT DD SYSOUT=Z
//SYSOUT DD SYSOUT=Z
//SYSUT1 DD DSN=AAF.S.CSASMF3,DISP=SHR
//SYSUT2 DD SYSOUT=Z,DCB=(LRECL=80,BLKSIZE=3120,RECFM=FB),DEST=RMT1
//SYSIN DD DUMMY
//* --------------------------------------------------------
//* ENVIAR MENSAGEM SMF MAIOR QUE 50%
//* --------------------------------------------------------
//PRODUCAO IF RC > 0 THEN
//* ESTE STEP ENVIA E-MAIL
//SMTP1 EXEC PGM=ICEGENER
//SYSPRINT DD SYSOUT=Z
//SYSOUT DD SYSOUT=Z
//SYSUT2 DD SYSOUT=Y,DCB=(LRECL=80,BLKSIZE=3120,RECFM=FB),
// DEST=RMT1
//SYSIN DD DUMMY
//SYSUT1 DD *,DLM=##
X-FROM: naoresponda@gmail.com
X-TO: claudemar@gmail.com
FROM: naoresponda@gmail.com
TO: claudemar@gmail.com
SUBJECT: SMF IGUAL OU MAIOR QUE 50%
OBSERVE O SMF POIS ELE ESTA IGUAL OU MAIOR QUE 50%;
PROD.USER.JCLS(AAFSNSMF
##
//AACPFIM ENDIF
Este é o e-mail que o pessoal do CPD vão receber:
OBSERVE O SMF POIS ELE ESTA IGUAL OU MAIOR QUE 50%;
PROD.USER.JCLS(AAFSNSMF
0 comentários:
Enviar um comentário