Mantenimiento archivos SMF

Todo lo relacionado con simuladores de HW para otras plataformas. Hercules y ...
Responder
tatindgp
Colaborador
Colaborador
Mensajes: 141
Registrado: 25 Feb 2008, 15:09
País: Argentina
Ciudad: Buenos Aires
Ocupación: Analista de desarrollo
Ubicación: BsAS Argentina

Mantenimiento archivos SMF

Mensaje por tatindgp » 02 Feb 2015, 14:32

Estimados,
Aquí eh vuelto… Vicente y ularrieta perdon por el retraso pero es que estoy con mucho trabajo.

Bueno paso a comentarles mi nuevo problema:
Logre por visualizar los RC de los pasos tal como habíamos hablado en el post “No veo los pasos del jcls en el spool (sdsf), para esto entre varias cosas que debemos de hacer una es poner el ACTIVE el SMF RECORDING dentro del miembre SMFPRMXX (en mi caso SMFPRM00), esto lo que me ocasiona ahora es lo siguiente:

1- Al ir poniendo los diferentes comando en la consola para poder bajar el Z/os (para cerrar todo) al llegar al comando Z EOD, me aparece el mensaje SMF ENTER DUMP FOR SYS1.MAN2 ON ZASYS1 y luego me dice que se empezara a grabar en SMF ENTER DUMP FOR SYS1.MAN1
2- Al realizar el IPL (en modo cold star) me aparece un mensaje similar a este:

*IEE362A SMF ENTER DUMP FOR SYS1.MAN 2 ON ZASYS1
IEE949I 08.18.41 SMF DATA SETS 696
NAME VOLSER SIZE(BLKS) %FULL STATUS
P-SYS1.MAN1 ZASYS1 7200 26 ACTIVE
S-SYS1.MAN2 ZASYS1 1800 1 DUMP REQUIRED
S-SYS1.MAN3 ZASYS1 1800 0 ALTERNATE
IEE360I SMF NOW RECORDING ON SYS1.MAN1 ON ZASYS1 TIME=08.18.41

3- Estuve investigando un poco y lo que llegue a hacer es tres Jobs iguales a este, donde solo cambia el archivo SYS1.MAN1 por SYS1.MAN2 y SYS1.MAN3 para poder vaciar los SYS1.MANX

//FORMAT EXEC PGM=IFASMFDP
//SYSPRINT DD SYSOUT=*
//NEWDS DD DSN=SYS1.MAN1,DISP=SHR
//SYSIN DD DSN=ADCD.Z110.PROCLIB(SMFOPT),DISP=SHR


//*ADCD.Z110.PROCLIB(SMFOPT)
//*INDD(NEWDS,OPTIONS(CLEAR))


Y los puse a los tres Jobs para que se ejecuten en el arranque, y ya no me aparece el mensaje SMF ENTER DUMP FOR SYS1.MANX en el arranque.
Le puse CLEAR porque sinceramente no tengo necesidad de guardarme la info de los SYS1.MANX, ahora sucede que dichos JOB no me terminan todos en RC=00 sino que siempre hay dos que terminan en RC= 08

JOBNAME Max-RC
SMF2 CC 0000
SMF3 CC 0008
SMF1 CC 0008



AL ver el spool de los mismos observo:

1 J E S 2 J O B L O G -- S Y S T E M S Y S 1 -- N O D E N 1
0
08.19.12 STC00008 ---- MONDAY, 02 FEB 2015 ----
08.19.12 STC00008 IEF695I START SMF1 WITH JOBNAME SMF1 IS ASSIGNED TO USER START2 , GROUP SYS1
08.19.12 STC00008 $HASP373 SMF1 STARTED
08.19.12 STC00008 IEF403I SMF1 - STARTED - TIME=08.19.12
08.19.13 STC00008 IEC161I 052(009,SMF)-084,SMF1,SMF1,NEWDS,,,SYS1.MAN1,SYS1.MAN1.DATA, 218
218 IEC161I CATALOG.Z110.MASTER
08.19.15 STC00008 IEC161I 052(009,SMF)-084,SMF1,SMF1,NEWDS,,,SYS1.MAN1,SYS1.MAN1.DATA, 243
243 IEC161I CATALOG.Z110.MASTER
08.19.18 STC00008 IEC161I 052(009,SMF)-084,SMF1,SMF1,NEWDS,,,SYS1.MAN1,SYS1.MAN1.DATA, 264
264 IEC161I CATALOG.Z110.MASTER
08.19.18 STC00008 IEF404I SMF1 - ENDED - TIME=08.19.18
08.19.18 STC00008 $HASP395 SMF1 ENDED
0------ JES2 JOB STATISTICS ------
- 02 FEB 2015 JOB EXECUTION DATE
- 2 CARDS READ
- 59 SYSOUT PRINT RECORDS
- 0 SYSOUT PUNCH RECORDS
- 3 SYSOUT SPOOL KBYTES
- 0.09 MINUTES EXECUTION TIME
1 //SMF1 JOB MSGLEVEL=1 STC00008
2 //STARTING EXEC SMF1
3 XXFORMAT EXEC PGM=IFASMFDP
4 XXSYSPRINT DD SYSOUT=*
5 XXNEWDS DD DSN=SYS1.MAN1,DISP=SHR
6 XXSYSIN DD DSN=ADCD.Z110.PROCLIB(SMFOPT),DISP=SHR
STMT NO. MESSAGE
2 IEFC001I PROCEDURE SMF1 WAS EXPANDED USING SYSTEM LIBRARY ADCD.Z110.PROCLIB
IEF695I START SMF1 WITH JOBNAME SMF1 IS ASSIGNED TO USER START2 , GROUP SYS1
IEF236I ALLOC. FOR SMF1 SMF1
IEF237I JES2 ALLOCATED TO SYSPRINT
IEF237I 0A82 ALLOCATED TO NEWDS
IEF237I 0A80 ALLOCATED TO SYSIN
IEC161I 052(009,SMF)-084,SMF1,SMF1,NEWDS,,,SYS1.MAN1,SYS1.MAN1.DATA,
IEC161I CATALOG.Z110.MASTER
IEC161I 052(009,SMF)-084,SMF1,SMF1,NEWDS,,,SYS1.MAN1,SYS1.MAN1.DATA,
IEC161I CATALOG.Z110.MASTER
IEC161I 052(009,SMF)-084,SMF1,SMF1,NEWDS,,,SYS1.MAN1,SYS1.MAN1.DATA,
IEC161I CATALOG.Z110.MASTER
IEF142I SMF1 SMF1 - STEP WAS EXECUTED - COND CODE 0008
IEF285I START2.SMF1.STC00008.D0000101.? SYSOUT
IGD104I SYS1.MAN1 RETAINED, DDNAME=NEWDS
IEF285I ADCD.Z110.PROCLIB KEPT
IEF285I VOL SER NOS= ZARES1.
IEF373I STEP/FORMAT /START 2015033.0819
IEF374I STEP/FORMAT /STOP 2015033.0819 CPU 0MIN 00.11SEC SRB 0MIN 00.00SEC VIRT 240K SYS 196K EXT
IEF375I JOB/SMF1 /START 2015033.0819
IEF376I JOB/SMF1 /STOP 2015033.0819 CPU 0MIN 00.11SEC SRB 0MIN 00.00SEC
IFA010I SMF DUMP PARAMETERS
IFA010I END(2400) -- DEFAULT
IFA010I START(0000) -- DEFAULT
IFA010I DATE(1900000,2099366) -- DEFAULT
IFA010I OUTDD(DUMPOUT,TYPE(0:255)) -- DEFAULT
IFA010I INDD(NEWDS,OPTIONS(CLEAR)) -- SYSIN
IFA020I NEWDS -- SYS1.MAN1
IFA011I SMF NEWDS DATASET CANNOT BE OPENED
IFA011I RETURN CODE=08. ERROR CODE=0168
IFA011I NO FURTHER PROCESSING OF THIS DATASET


Al parecer estos errores se deben a que dichos archivos ya se encuentran abiertos por el sistema y pueden ser nuevamente abiertos.
Mi gran duda sería ¿cómo hago para que de manera automática se identifique que archivo SYS1.MANX necesita ser vaciado y asi ejecutar el JOB que corresponda y nos los tres que arme tal como estoy haciendo yo ahora?
Los torpes abren caminos que luego los sabios recorreran.

Saludos y gracias
Tatindgp

ularrieta
Usuario
Usuario
Mensajes: 20
Registrado: 21 Ene 2015, 20:23
País: España
Ciudad: Bilbao
Ocupación: IT Specialist

Re: Mantenimiento archivos SMF

Mensaje por ularrieta » 03 Feb 2015, 06:05

Todo esto lo arreglas con la exit IEFU29, esta exit captura el mensaje del DUMP que te sale en la consola maestra, y a continuación lanza un procedimiento llamado DUMPXY un cuyo contenido deberias especificar el borrado de dicho SYS1.MANx (yo no lo tengo asi, en vez de borrar, lo que hago es llevarlo a un GDG para su posterior analisis).

Por pasos:

1.- Localiza la SYS1.SAMPLIB. Deberias tener un miembro llamado IEEU29. Si ves dicho miembro, verás que es un fuente en ASSEMBLER para ser compilado, y en cuyos comentarios al principio hace referencia a que al ser llamado, él espera lanzar un PROC que se llama DUMPXY y cuyo parámentro será FILENM del estilo: "START DUMPXY,FILENM=SYS1.MANN" siendo SYS1.MANN el dataset que necesite sacarse a DUMP.

2.- Compila el IEEU29 y que te lo deje en tu LINKLIB (en mic aso, SYS1.LINKLIB). Puedes utilizar este JCL:

//ASEMBLER JOB GODDESS,URD,CLASS=A,MSGCLASS=A,NOTIFY=&SYSUID,
// MSGLEVEL=(1,1)
//ASMU291 EXEC ASMACL,
// PARM.C='RENT,OBJECT,NODECK,SYSPARM(V5J2)',
// PARM.L='RENT,REUS,XREF,LIST'
//C.SYSLIB DD DISP=SHR,DSN=SYS1.MACLIB
//C.SYSIN DD DISP=SHR,DSN=SYS1.SAMPLIB(IEEU29)
//L.SYSLMOD DD DISP=SHR,DSN=SYS1.LINKLIB(IEFU29)
//L.SYSIN DD *
IDENTIFY IEFU29('IPOB290')
/*

3.- Con dicha exit compilada, edita tu bienamado miembro SMFPRM00 que ya has editado ultimamente de la PARMLIB y añade lo siguiente (te lo pongo en negrita):
En la parte SYS:

SYS(NOTYPE(14:19,62:69),EXITS(IEFU83,IEFU84,IEFACTRT,
IEFUSI,IEFUJI,IEFU29),NOINTERVAL,NODETAIL)
En la parte SYBSYS (de STC):

SUBSYS(STC,EXITS(IEFU29,IEFU83,IEFU84,IEFUJP,IEFUSO))

(si es que no lo tenias ya escrito, que creo que por defecto viene ya, pero asegurate :mrgreen: ).

4.- Nos vamos a nuestra PROGXX y añadimos la correspondiente carga de la LINKLIST (donde habias editado para añadir lo de los pasos del JCL):

EXIT ADD EX=SYSJES2.IEFACTRT MOD=IEFACTRT DSN=USER.LINKLIB
EXIT ADD EXITNAME=SYS.IEFU29 MODNAME=IEFU29
EXIT ADD EXITNAME=SYSSTC.IEFU29 MODNAME=IEFU29


Refresca todo con un F LLA,REFRESH y con un SET PROG=XX

5.- Por último, solo nos queda crear el procedimiento DUMPXY y grabarlo en nuestro PROCLIB. Este es el mio:

//DUMPXY PROC FILENM=NULLFILE
//DUMPXY EXEC PGM=IFASMFDP,REGION=0M
//SYSPRINT DD SYSOUT=X,HOLD=YES
//DUMPOUT DD DSN=SISTEMAS.SMFDUMP(+1),DISP=(,CATLG),
// SPACE=(CYL,(10,10),RLSE),
// DCB=(RECFM=VBS,LRECL=32756,BLKSIZE=27998,BUFNO=20)
//DUMPIN DD DSNAME=&FILENM,DISP=SHR
//SYSIN DD DUMMY

Yo creo un GDG llamado SISTEMAS.SMFDUMP donde guardo el contenido del SYS1.MANx, vaciandose éste y quitando el mensaje del DUMP. Tu puedes sustituir ese PROC por el de borrado tuyo, pero ten siempre presente que este proc solo pide un parametro, y éste se llama FILENM (si hubieras querido otro nombre, tendrias que haber compilado el ASSEMBLER anterior editando el parámetro de salida, pero no te metas en ese berenjenal por ahora), asi que no te equivoques, si quieres borrar los 3 SYS1.MAN1, MAN2 y MAN3, el procedimiento presumiblemente se lanzará 3 veces. Aunque si tienes los dos vacios, y uno está en uso, cuando este llegue al 100% y marque el mensaje de DUMP, el pocedimiento automáticamente debería lanzarse y borrar dicho SYS1.MAN sin intervención humana alguna.

La forma que tienes de probarlo, es provocar un DUMP del SYS1.MANx, es decir, ejecutando el comando de consola I SMF, eso hace que si por ejemplo, SYS1.MAN1 en esta en uso, empiece a usar SYS1.MAN2 y marcar el SYS1.MAN1 como DUMP REQUIRED (a pesar de no haber llegado al 100% de ocupacion). Si ves la llamada al DUMPXY de forma automatica por consola, PROFIT!!! :mrgreen:

De todas formas, prueba el PROC antes de lanzar el "I SMF", y asegurate que no te da un start JCL error, ya que como bien sabes, en un proc la SYSIN no debería llevar parametros, sino apuntarse a un miembro. En definitiva, si tu escribes en la master console S DUMPXY,FILENM=SYS1.MAN1, deberia vaciarte el SYS1.MAN1. Si no lo hace... es que el procedimiento no te está funcionando.

Espero que todo esto te sirva de ayuda :sombrero:
Recetas Hercules, z/OS y AS/400 en http://www.mainframecorner.com

tatindgp
Colaborador
Colaborador
Mensajes: 141
Registrado: 25 Feb 2008, 15:09
País: Argentina
Ciudad: Buenos Aires
Ocupación: Analista de desarrollo
Ubicación: BsAS Argentina

Re: Mantenimiento archivos SMF

Mensaje por tatindgp » 03 Feb 2015, 13:47

ularrieta,
Gracias por tu pronta respuesta, te comento que segui todos los paso y funciona, solo hasta que hago un IPL, osea...en el arranque me sigue apareciendo el mensaje SMF ENTER DUMP FOR SYS1.MANX
Los torpes abren caminos que luego los sabios recorreran.

Saludos y gracias
Tatindgp

ularrieta
Usuario
Usuario
Mensajes: 20
Registrado: 21 Ene 2015, 20:23
País: España
Ciudad: Bilbao
Ocupación: IT Specialist

Re: Mantenimiento archivos SMF

Mensaje por ularrieta » 03 Feb 2015, 14:09

Asegurate de que al hacer IPL, lo hagas CLPA, ya que de lo contrario no te creará la estructura de la EXIT en la IPL. Si añades en un IEASYSXX la primera línea, CLPA (seguida de una coma), deberias arrancar sin problemas.
Recetas Hercules, z/OS y AS/400 en http://www.mainframecorner.com

tatindgp
Colaborador
Colaborador
Mensajes: 141
Registrado: 25 Feb 2008, 15:09
País: Argentina
Ciudad: Buenos Aires
Ocupación: Analista de desarrollo
Ubicación: BsAS Argentina

Re: Mantenimiento archivos SMF

Mensaje por tatindgp » 03 Feb 2015, 15:20

ummm es muy raro porque yo en la IEASYSXX que estoy usando tengo el CLPA puesto
Los torpes abren caminos que luego los sabios recorreran.

Saludos y gracias
Tatindgp

tatindgp
Colaborador
Colaborador
Mensajes: 141
Registrado: 25 Feb 2008, 15:09
País: Argentina
Ciudad: Buenos Aires
Ocupación: Analista de desarrollo
Ubicación: BsAS Argentina

Re: Mantenimiento archivos SMF

Mensaje por tatindgp » 04 Feb 2015, 08:38

ularrieta,
Te comento que revise bien el IEASYSDC( es el uso yo) y tengo el CLPA puesto, es como si no estuvera ejecutandose al inicio la IEFU29 porque esto sigue apareciendo:

[ *15.58.24 *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
* POLICY
*15.58.31 *IEE362A SMF ENTER DUMP FOR SYS1.MAN2 ON ZASYS1
15.58.31 IEE949I 15.58.31 SMF DATA SETS 688 C
NAME VOLSER SIZE(BLKS) %FULL STATUS
P-SYS1.MAN1 ZASYS1 7200 7 ACTIVE
S-SYS1.MAN2 ZASYS1 1800 1 DUMP REQUIRED
S-SYS1.MAN3 ZASYS1 1800 0 ALTERNATE
15.58.31 IEE360I SMF NOW RECORDING ON SYS1.MAN1 ON ZASYS1
TIME=15.58.31
15.58.33 COF011I VLF INITIALIZATION IS IN PROGRESS.
15.58.33 COF511I DLF INITIALIZATION IS IN PROGRESS.
15.58.34 IRA600I SRM CHANNEL DATA NOW AVAILABLE FOR ALL SRM
FUNCTIONS
00 15.58.35 COF110I COFVLF00, RECORD 42,
EDSN OR EMAJ KEYWORD IS MISSING FOR CLASS IRRGTS.
15.58.35 IGD020I SMS IS NOW ACTIVE
15.58.35 COF025I VLF INITIALIZATION IS COMPLETE.
15.58.35 AXR0102I SYSTEM REXX INITIALIZATION COMPLETE
15.58.36 COF525I DLF INITIALIZATION IS COMPLETE.
IEE612I CN=L700 DEVNUM=0700 SYS=ADCD




cuando intente compilar la exit IEFU29 con el job que vos me pasaste en este mismo post me arrojo este error:

THE FOLLOWING INVALID RECORD HAS BEEN SEEN: IDENTIFY IEFU29('IPOB290')

entonces yo la compile con este:


//SPSMFXIT JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//ASMXIT EXEC HLASMCL,REGION=4M,COND.L=(0,NE,C),
// PARM.L='LIST,LET,NCAL,XREF,RENT,REUS'
//C.SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
// DD DSN=SYS1.MODGEN,DISP=SHR
//C.SYSIN DD DSN=SYS1.SAMPLIB(IEEU29),DISP=SHR
//L.SYSLMOD DD DSN=USER.LINKLIB(IEFU29),DISP=SHR,UNIT=3390,
// SPACE=(TRK,5)



Te comento tambien que si yo hago a mano un "S DUMPXY,FILENM=SYS1.MANX (x es el numero 1, 2 o 3)" el proceso funciona ok y si doy un I SMF tambien funciona ok

16.52.47 I SMF
16.52.47 IEFU29 HAS ISSUED COMMAND 'START DUMPXY,
FILENM=SYS1.MAN1'
16.52.47 IEE360I SMF NOW RECORDING ON SYS1.MAN2 ON ZASYS1
TIME=16.52.47
16.52.47 STC00058 $HASP373 DUMPXY STARTED
16.52.52 STC00058 IEF404I DUMPXY - ENDED - TIME=16.52.52

--------------------------------------------------------------------------------------------

JOBNAME Device Offs Max-RC
DUMPXY CC 0000
Los torpes abren caminos que luego los sabios recorreran.

Saludos y gracias
Tatindgp

tatindgp
Colaborador
Colaborador
Mensajes: 141
Registrado: 25 Feb 2008, 15:09
País: Argentina
Ciudad: Buenos Aires
Ocupación: Analista de desarrollo
Ubicación: BsAS Argentina

Re: Mantenimiento archivos SMF

Mensaje por tatindgp » 04 Feb 2015, 08:38

Lo que no entendi bien es que si tengo que tocar algo dentro de la exit



SYS1.SAMPLIB(IEEU29) ya que yo la deje asi:


Primera parte de la SYS1.SAMPLIB(IEEU29)

IEFU29 CSECT
PRINT OFF
AIF ('&SYSPARM' EQ 'V4J2').V4J2
AIF ('&SYSPARM' EQ 'V4J3').V4J3
AIF ('&SYSPARM' EQ 'V5J2').V5J2
AIF ('&SYSPARM' EQ 'V5J3').V5J3
.V4J2 ANOP
PRINT ON
IEFU29 TITLE 'SMF SWITCH EXIT ROUTINE '
*/* LIB: SYS1.SAMPLIB(IEEU29) @L1C*/
*/* GDE: IBM MVS CUSTOMIZATION @L1C*/
*/* DOC: THIS IS SAMPLE SMF EXIT ROUTINE THAT IS ENTERED WHEN */
*/* AN SMF DATA SET IS SWITCHED. IT STARTS A DUMP FOR THE */
*/* FULL DATA SET. THIS SAMPLE SMF EXIT IS FOR MVS VERSION 4 */
*/* JES2. */
*/****START OF SPECIFICATIONS*****************************************/
*/* */
*/* $MAC(IEEU29) COMP(SC100) PROD(HBB7709): DUMP START EXIT @P1C*/
*/* */
*/*01* MODULE NAME = IEFU29 */
*/* */
*/*01* DESCRIPTIVE NAME = CUSTOM-BUILT IBM SUPPLIED */
*/* SMF EXIT ROUTINE TO START DUMP OF SMF WHEN SMF */
*/* SWITCH COMMAND IS ISSUED. */
*/* */
* *01* PROPRIETARY STATEMENT= */
*/ **PROPRIETARY_STATEMENT********************************************/
*/ */
*/ LICENSED MATERIALS - PROPERTY OF IBM */
*/ THIS MACRO IS "RESTRICTED MATERIALS OF IBM" */
*/ 5694-A01 (C) COPYRIGHT IBM CORP. 1999, 2004 */
*/ */
*/ STATUS= HBB7709 */
*/ */
*/ **END_OF_PROPRIETARY_STATEMENT*************************************/
*/* */
*/*01* FUNCTION = ISSUES START COMMAND FOR DUMPXY PROCEDURE. */
*/* */
*/*02* OPERATION = ISSUE COMMAND 'START DUMPXY,FILENM=SYS1.MANN' */
*/* WHERE N IS REPLACED BY THE NUMBER OF THE SMF */
*/* DATA SET TO BE DUMPED. @P1C*/
*/* */
*/*01* NOTES = */
*/* */
*/*02* DEPENDENCIES = */
*/* */
*/*02* CHARACTER CODE DEPENDENCIES = CHARACTER SET IS EBCDIC. */
*/* REASSEMBLE IF DIFFERENT CHARSET IS NEEDED. */
*/* */
*/*02* RESTRICTIONS = NONE */
*/* */
*/*02* REGISTER CONVENTIONS = STANDARD CONVENTIONS. */
*/* */
*/*03* REGISTERS SAVED = 2-14 */
*/* */
*/*03* REGISTER USAGE = 2-14 */
*/* */
*/* REGISTERS 0 TO 5 = WORK REGISTERS */
*/* REGISTERS 6 TO 11 = UNUSED */
*/* REGISTER 12 = ADDRESSABILITY TO IEFU29 */
*/* CSECT */
*/* REGISTER 13 = ADDRESSIBILITY TO DATA DSECT */
*/* REGISTERS 14,15 = WORK REGISTERS */
*/* */
*/*03* REGISTERS RESTORED = 2-14 */
*/* */
*/*02* PATCH LABEL = PATCH (UNUSED AND INTIALIZED TO */
*/* BINARY ZEROES) */
*/* */
*/*01* MODULE TYPE = PROCEDURE */
*/* */
*/*02* PROCESSOR = ASSEMBLER H VERSION 2 */
*/* */
*/*02* MODULE SIZE = SEE ASSEMBLER LISTING */
*/* */
*/*02* ATTRIBUTES = */
*/* */
*/* LOCATION = LPA */
*/* STATE = SUPERVISOR */
*/* AMODE = 31 */
*/* RMODE = ANY */
*/* KEY = KEY 0 */
*/* MODE = ENABLED */
*/* SERIALIZATION = NONE */
*/* TYPE = REENTRANT */
*/* */
*/* ================================================================ */
*/* */
*/*01* ENTRY POINT = IEFU29 */
*/* */
*/*02* PURPOSE = */
*/* */
*/*02* LINKAGE = */
*/* */
*/*03* CALLERS = */
*/* */
*/*02* INPUT = */
*/* */
*/*02* ENTRY REGISTERS = REG1 POINTS TO FULLWORD ADDRESS OF DATA */
*/* SET NAME (SYS1.MANX/SYS1.MANY) TO BE */
*/* DUMPED. */
*/* */
*/*02* OUTPUT = NONE */
*/* */
*/*02* EXIT NORMAL = AT PROGRAM END VIA BSM 0,14 */
*/* */
*/*03* CONDITIONS = */
*/* */
*/*02* EXIT REGISTERS = */
*/* */
*/*03* RETURN CODES = 0 - EXIT NOPED JES NOT ACTIVE */
*/* 4 - TO PREVENT SMF FROM ISSUING */
*/* MESSAGE IEE362A OR IEE362I */
*/* */
*/*02* EXIT ERROR = NONE */
*/* */
*/*03* CONDITIONS = */
*/* */
*/*02* EXIT REGISTERS = */
*/* */
*/*03* RETURN CODE = FOUR */
*/* */
*/* ================================================================ */
*/* */
*/*01* EXTERNAL REFERENCES = */
*/* */
*/*02* ROUTINES = NONE */
*/* */
*/*02* DATA AREAS = NONE */
*/* */
*/*02* CONTROL BLOCKS = NONE */
*/* */
*/*01* TABLES = NONE */
*/* */
*/*01* MAPPING MACROS = */
*/* */
*/*01* EXECUTABLE MACROS = SAVE, WTO, RETURN, GETMAIN, FREEMAIN */
*/* */
*/*01* SERIALIZATION = NONE */
*/* */
*/*01* MESSAGES = INFORM OPERATOR THAT COMMAND HAS BEEN ISSUED. */
*/* */
*/*01* ABEND CODES = NONE */
*/* */
*/*01* WAIT STATE CODES = NONE */
*/* */
*/*01* SYSGEN = */
*/* LOAD MODULE = IEFU29 */
*/* DISTRIBUTION LIBRARY = ASAMPLIB */
*/* SYSGEN MACRO =N/A */
*/* ALIAS NAME = NONE */
*/* ENTRY POINT = IEFU29 */
*/* TARGET LIBARY = SAMPLIB */
*/* */
*/*01* CHANGE ACTIVITY = THIS MODULE HAS BEEN UPDATED FOR MVS/XA. */
*/* THIS MODULE RUNS IN 31-BIT MODE ABOVE THE */
*/* LINE. AS SVC 34 REQUIRES PARAMETERS BELOW */
*/* THE LINE, STORAGE IS ACQUIRED WITH THE */
*/* LOC=BELOW OPTION. */
*/* */
*/*$CC= REASONCD RELEASE DTCHGD PGMR: DESCRIPTION */
*/*$L1= SMFEXITS JBB6607 980501 PDSE: CONFORM TO BCP/MVS @L1A*/
*/* STANDARDS. @L1A*/
*/*$P1= PJK0323 HBB7709 030720 PDOO: MSGIEE122I DUE TO EXIT @P1A*/
*/* DEFAULT PARAMETER @P1A*/
*/* (FIN APAR OW56981) @P1A*/
*/* */
*/*01* CHANGE DESCRIPTION = @P1A*/
*/* */
*/* C - Changed symbolic parameter name in start command from @P1A*/
*/* DSNAME to FILENM. This is because DSNAME is a JCL @P1A*/
*/* keyword, and it caused confusion with the overrides. @P1A*/
*/* */
*/****END OF SPECIFICATIONS*V4J2**************************************/
EJECT
IEFU29 CSECT , CSECT NAME DECLARED
IEFU29 AMODE 31 IPOXA
IEFU29 RMODE ANY IPOXA
*
* CONSTANT EQUATES
*
CMDSVC EQU 34 SVC TO ISSUE COMMAND
DSNLEN EQU 9 LENGTH OF DSNAME FIELD
*
K0 EQU 0 CONSTANT 0
K1 EQU 1 CONSTANT 1
K2 EQU 2 CONSTANT 2
K4 EQU 4 CONSTANT 4
K8 EQU 8 CONSTANT 8
K12 EQU 12 CONSTANT 12
K16 EQU 16 CONSTANT 16
K24 EQU 24 CONSTANT 24
K296 EQU 296 CONSTANT 296
*
* REGISTER EQUATES
*
R00 EQU 00 REGISTER 0
R01 EQU 01 REGISTER 1
R02 EQU 02 REGISTER 2
R03 EQU 03 REGISTER 3
R04 EQU 04 REGISTER 4
R05 EQU 05 REGISTER 5
R06 EQU 06 REGISTER 6
R07 EQU 07 REGISTER 7
R08 EQU 08 REGISTER 8
R09 EQU 09 REGISTER 9
R10 EQU 10 REGISTER 10
R11 EQU 11 REGISTER 11
R12 EQU 12 REGISTER 12
R13 EQU 13 REGISTER 13
R14 EQU 14 REGISTER 14
R15 EQU 15 REGISTER 15
EJECT
SAVE (14,12),,IEFU29_&SYSDATE SAVE REGISTERS
USING IEFU29,R12 SET UP BASE ADDRESSABILITY
USING DATA,R13 SET UP DATA AREA ADDRESSABILITY
LR R12,R15 LOAD BASE REG WITH ENTRY POINT
L R08,K0(R01) SAVE INPUT PARM(DSNAME)
GETMAIN RU,LV=DATALEN,SP=0,LOC=BELOW GET STORAGE IPOXA
ST R13,K4(R01) SAVE CALLER'S SAVE AREA ADDR
ST R01,K8(R13) SAVE MY SAVE AREA ADDRESS
LR R13,R01 LOAD SAVE AREA ADDRESS
L R05,K16 CVT IN 5 IPOJ2
L R05,K296(R05) JEST IN 5 IPOJ2
L R05,K24(R05) SSCT IN 5 IPOJ2
L R05,K16(R05) SSCT + 10 IN 4 IPOJ2
LTR R05,R05 IS JES AVAILABLE? IPOJ2
BZ SKIPEXIT ZERO GET OUT
MVC ENQLIST(LENQLIST),ENQLSTX LOAD IN MODEL PARM LIST
ENQ MF=(E,ENQLIST) TEST IF RESOURCE IN USE?
LTR R15,R15 WAS THE RESOURCE AVAILABLE?
BNZ SKIPDUMP NO, DO NOT START DUMP
MVC WTOAREA(WTOLEN),WTOL MOVE IN WTO MESSAGE
MVC WTOAREA+DSNOFF(DSNLEN),K0(R08) MOVE DSNAME IN MSG
MVC CMDAREA(CMDLEN),CMDL MOVE IN START COMMAND
MVC CMDAREA+DSNCOFF(DSNLEN),K0(R08) MOVE DSN IN START CMD
SLR R00,R00 CLEAR REG ZERO FOR SVC 34
LA R01,CMDAREA POINT TO START COMMAND
SVC CMDSVC ISSUE START COMMAND
WTO MF=(E,WTOAREA) ISSUE MSG
SKIPDUMP LR R01,R13 LOAD GETMAINED AREA
L R13,K4(R13) POINT TO CALLER'S SAVE AREA
FREEMAIN RU,LV=DATALEN,A=(1) FREE GETMAINED STORAGE IPOXA
LM 14,12,12(13) RESTORE REGISTERS IPOXA
LA 15,4 SET RETURN CODE TO 4 IPOXA
BSM 0,R14 RESTORE CALLER'S MODE IPOXA
SKIPEXIT LR R01,R13 LOAD GETMAINED AREA
L R13,K4(R13) POINT TO CALLER'S SAVE AREA
FREEMAIN RU,LV=DATALEN,A=(1) FREE GETMAINED STORAGE IPOXA
LM 14,12,12(13) RESTORE REGISTERS IPOXA
LA 15,0 SET RETURN CODE TO ZERO IPOJ2
BSM 0,R14 RESTORE CALLER'S MODE IPOXA
EJECT
*
* DATA AREA
*
SMFQNAME DC CL8'IPOSMF01' SIPO50
SMFRNAME DC CL7'DATASET'
*
CMDL DS 0F START COMMAND FORMAT FOR SVC 34
DC AL2(CMDLEN),AL2(00) LENGTH OF STRING
DC C'START DUMPXY,FILENM=XXXXXXXXX ' . CMND + BLANK @P1C
* 456789012345678901234567890123456 . CHECK COLUMNS
CMDLEN EQU *-CMDL LENGTH OF COMMAND STRING
DSNCOFF EQU 24 OFFSET OF DSNAME FIELD IN CMD LIST
*
WTOL WTO 'IEFU29 HAS ISSUED COMMAND ''START DUMPXY,FILENM=XXXXXXXC
XX'' ',ROUTCDE=(1,2,11),MF=L @P1C
* 456789012345678901234567890 1234567890123456789012
WTOLEN EQU *-WTOL LENGTH OF WTO STRING
DSNOFF EQU 51 OFFSET OF DSNAME FIELD IN WTO LIST
ENQLSTX ENQ (SMFQNAME,SMFRNAME,E,,SYSTEM),RET=TEST,MF=L
*
* DATA DSECT - AREA TO BE GETMAIN'ED
*
DATA DSECT
SAVE DS 18F REGISTER SAVE AREA
CMDAREA DS 0F,XL(CMDLEN) AREA FOR COMMAND
WTOAREA DS 0F,XL(WTOLEN) AREA FOR WTO PARM LIST
ENQLIST ENQ (SMFQNAME,SMFRNAME,E,,SYSTEM),RET=TEST,MF=L
LENQLIST EQU *-ENQLIST LENGTH OF WTO STRING
RESERVED DS 4D RESERVED
DATALEN EQU *-DATA EQUATE FOR LENGTH OF DATA DSECT
*
IEFU29 CSECT GET BACK TO CSECT
DS 0D FORCE TO DOUBLE WORD
*
* PATCH AREA
*
MODLEN EQU *-IEFU29 EQUATE FOR MODULE LENGTH(- PATCH)
PTCHLEN EQU ((MODLEN+7)/8+7)/8*8 PATCH AREA LENGTH EQUATE
PTCHLNTH DC Y(PTCHLEN) LENGTH OF PATCH AREA
PTCHBASE DC S(PATCH) BASE DISPLACED ADDRESS OF PATCH
PATCH DC XL(PTCHLEN)'00' PATCH AREA
PRINT OFF
AGO .FINI
.V4J3 ANOP
PRINT ON
IEFU29 TITLE 'SMF SWITCH EXIT ROUTINE '
*/* LIB: SYS1.SAMPLIB(IEEU29) @L1C*/
*/* GDE: IBM MVS CUSTOMIZATION @L1C*/
*/* DOC: THIS IS SAMPLE SMF EXIT ROUTINE THAT IS ENTERED WHEN */
*/* AN SMF DATA SET IS SWITCHED. IT STARTS A DUMP FOR THE */
*/* FULL DATA SET. THIS SAMPLE SMF EXIT IS FOR MVS VERSION 4 */
*/* JES3. */
*/****START OF SPECIFICATIONS*****************************************/
*/* */
*/* $MAC(IEEU29) COMP(SC100) PROD(HBB7709): DUMP START EXIT */
*/* */
*/*01* MODULE NAME = IEFU29 */
*/* */
*/*01* DESCRIPTIVE NAME = CUSTOM-BUILT IBM SUPPLIED */
*/* SMF EXIT ROUTINE TO START DUMP OF SMF WHEN SMF */
*/* SWITCH COMMAND IS ISSUED. */
*/* */
* *01* PROPRIETARY STATEMENT= */
*/ **PROPRIETARY_STATEMENT********************************************/
*/ */
*/ LICENSED MATERIALS - PROPERTY OF IBM */
*/ THIS MACRO IS "RESTRICTED MATERIALS OF IBM" */
*/ 5694-A01 (C) COPYRIGHT IBM CORP. 1999, 2004 */
*/ */
*/ STATUS= HBB7709 */
*/ */
*/ **END_OF_PROPRIETARY_STATEMENT*************************************/
*/* */
*/*01* FUNCTION = ISSUES START COMMAND FOR DUMPXY PROCEDURE. */
*/* */
*/*02* OPERATION = ISSUE COMMAND 'START DUMPXY,FILENM=SYS1.MANN' */
*/* WHERE N IS REPLACED BY THE NUMBER OF THE SMF */
*/* DATA SET TO BE DUMPED. @P1C*/
*/* */
*/*01* NOTES = */
*/* */
*/*02* DEPENDENCIES = */
*/* */
*/*02* CHARACTER CODE DEPENDENCIES = CHARACTER SET IS EBCDIC. */
*/* REASSEMBLE IF DIFFERENT CHARSET IS NEEDED. */
*/* */
*/*02* RESTRICTIONS = NONE */
*/* */
*/*02* REGISTER CONVENTIONS = STANDARD CONVENTIONS. */
*/* */
*/*03* REGISTERS SAVED = 2-14 */
*/* */
*/*03* REGISTER USAGE = 2-14 */
*/* */
*/* REGISTERS 0 TO 5 = WORK REGISTERS */
*/* REGISTERS 6 TO 11 = UNUSED */
*/* REGISTER 12 = ADDRESSABILITY TO IEFU29 */
*/* CSECT */
*/* REGISTER 13 = ADDRESSIBILITY TO DATA DSECT */
*/* REGISTERS 14,15 = WORK REGISTERS */
*/* */
*/*03* REGISTERS RESTORED = 2-14 */
*/* */
*/*02* PATCH LABEL = PATCH (UNUSED AND INTIALIZED TO */
*/* BINARY ZEROES) */
*/* */
*/*01* MODULE TYPE = PROCEDURE */
*/* */
*/*02* PROCESSOR = ASSEMBLER H VERSION 2 */
*/* */
*/*02* MODULE SIZE = SEE ASSEMBLER LISTING */
*/* */
*/*02* ATTRIBUTES = */
*/* */
*/* LOCATION = LPA */
*/* STATE = SUPERVISOR */
*/* AMODE = 31 */
*/* RMODE = ANY */
*/* KEY = KEY 0 */
*/* MODE = ENABLED */
*/* SERIALIZATION = NONE */
*/* TYPE = REENTRANT */
*/* */
*/* ================================================================ */
*/* */
*/*01* ENTRY POINT = IEFU29 */
*/* */
*/*02* PURPOSE = */
*/* */
*/*02* LINKAGE = */
*/* */
*/*03* CALLERS = */
*/* */
*/*02* INPUT = */
*/* */
*/*02* ENTRY REGISTERS = REG1 POINTS TO FULLWORD ADDRESS OF DATA */
*/* SET NAME (SYS1.MANX/SYS1.MANY) TO BE */
*/* DUMPED. */
*/* */
*/*02* OUTPUT = NONE */
*/* */
*/*02* EXIT NORMAL = AT PROGRAM END VIA BSM 0,14 */
*/* */
*/*03* CONDITIONS = */
*/* */
*/*02* EXIT REGISTERS = */
*/* */
*/*03* RETURN CODES = 0 - EXIT NOPED JES NOT ACTIVE */
*/* 4 - TO PREVENT SMF FROM ISSUING */
*/* MESSAGE IEE362A OR IEE362I */
*/* */
*/*02* EXIT ERROR = NONE */
*/* */
*/*03* CONDITIONS = */
*/* */
*/*02* EXIT REGISTERS = */
*/* */
*/*03* RETURN CODE = FOUR */
*/* */
*/* ================================================================ */
*/* */
*/*01* EXTERNAL REFERENCES = */
*/* */
*/*02* ROUTINES = NONE */
*/* */
*/*02* DATA AREAS = NONE */
*/* */
*/*02* CONTROL BLOCKS = NONE */
*/* */
*/*01* TABLES = NONE */
*/* */
*/*01* MAPPING MACROS = */
*/* */
*/*01* EXECUTABLE MACROS = SAVE, WTO, RETURN, GETMAIN, FREEMAIN */
*/* */
*/*01* SERIALIZATION = NONE */
*/* */
*/*01* MESSAGES = INFORM OPERATOR THAT COMMAND HAS BEEN ISSUED. */
*/* */
*/*01* ABEND CODES = NONE */
*/* */
*/*01* WAIT STATE CODES = NONE */
*/* */
*/*01* SYSGEN = */
*/* LOAD MODULE = IEFU29 */
*/* DISTRIBUTION LIBRARY = ASAMPLIB */
*/* SYSGEN MACRO =N/A */
*/* ALIAS NAME = NONE */
*/* ENTRY POINT = IEFU29 */
*/* TARGET LIBARY = SAMPLIB */
*/* */
*/*01* CHANGE ACTIVITY = THIS MODULE HAS BEEN UPDATED FOR MVS/XA. */
*/* THIS MODULE RUNS IN 31-BIT MODE ABOVE THE */
*/* LINE. AS SVC 34 REQUIRES PARAMETERS BELOW */
*/* THE LINE, STORAGE IS ACQUIRED WITH THE */
*/* LOC=BELOW OPTION. */
*/* */
*/*$CC= REASONCD RELEASE DTCHGD PGMR: DESCRIPTION */
*/*$L1= SMFEXITS JBB6607 980501 PDSE: CONFORM TO BCP/MVS @L1A*/
*/* STANDARDS. @L1A*/
*/*$P1= PJK0323 HBB7709 030720 PDOO: MSGIEE122I DUE TO EXIT @P1A*/
*/* DEFAULT PARAMETER @P1A*/
*/* (FIN APAR OW56981) @P1A*/
*/* */
*/*01* CHANGE DESCRIPTION = @P1A*/
*/* */
*/* C - Changed symbolic parameter name in start command from @P1A*/
*/* DSNAME to FILENM. This is because DSNAME is a JCL @P1A*/
*/* keyword, and it caused confusion with the overrides. @P1A*/
*/* */
*/****END OF SPECIFICATIONS**V4J3*************************************/
EJECT
IEFU29 CSECT , CSECT NAME DECLARED
IEFU29 AMODE 31 IPOXA
IEFU29 RMODE ANY IPOXA
*
* CONSTANT EQUATES
*
CMDSVC EQU 34 SVC TO ISSUE COMMAND
DSNLEN EQU 9 LENGTH OF DSNAME FIELD
*
K0 EQU 0 CONSTANT 0
K1 EQU 1 CONSTANT 1
K2 EQU 2 CONSTANT 2
K4 EQU 4 CONSTANT 4
K8 EQU 8 CONSTANT 8
K12 EQU 12 CONSTANT 12
K16 EQU 16 CONSTANT 16
*
* REGISTER EQUATES
*
R00 EQU 00 REGISTER 0
R01 EQU 01 REGISTER 1
R02 EQU 02 REGISTER 2
R03 EQU 03 REGISTER 3
R04 EQU 04 REGISTER 4
R05 EQU 05 REGISTER 5
R06 EQU 06 REGISTER 6
R07 EQU 07 REGISTER 7
R08 EQU 08 REGISTER 8
R09 EQU 09 REGISTER 9
R10 EQU 10 REGISTER 10
R11 EQU 11 REGISTER 11
R12 EQU 12 REGISTER 12
R13 EQU 13 REGISTER 13
R14 EQU 14 REGISTER 14
R15 EQU 15 REGISTER 15
EJECT
SAVE (14,12),,IEFU29_&SYSDATE SAVE REGISTERS
USING IEFU29,R12 SET UP BASE ADDRESSABILITY
USING DATA,R13 SET UP DATA AREA ADDRESSABILITY
LR R12,R15 LOAD BASE REG WITH ENTRY POINT
L R08,K0(R01) SAVE INPUT PARM(DSNAME)
GETMAIN RU,LV=DATALEN,SP=0,LOC=BELOW GET STORAGE IPOXA
ST R13,K4(R01) SAVE CALLER'S SAVE AREA ADDR
ST R01,K8(R13) SAVE MY SAVE AREA ADDRESS
LR R13,R01 LOAD SAVE AREA ADDRESS
MVC ENQLIST(LENQLIST),ENQLSTX LOAD IN MODEL PARM LIST
ENQ MF=(E,ENQLIST) TEST IF RESOURCE IN USE?
LTR R15,R15 WAS THE RESOURCE AVAILABLE?
BNZ SKIPDUMP NO, DO NOT START DUMP
MVC WTOAREA(WTOLEN),WTOL MOVE IN WTO MESSAGE
MVC WTOAREA+DSNOFF(DSNLEN),K0(R08) MOVE DSNAME IN MSG
MVC CMDAREA(CMDLEN),CMDL MOVE IN START COMMAND
MVC CMDAREA+DSNCOFF(DSNLEN),K0(R08) MOVE DSN IN START CMD
SLR R00,R00 CLEAR REG ZERO FOR SVC 34
LA R01,CMDAREA POINT TO START COMMAND
SVC CMDSVC ISSUE START COMMAND
WTO MF=(E,WTOAREA) ISSUE MSG
SKIPDUMP LR R01,R13 LOAD GETMAINED AREA
L R13,K4(R13) POINT TO CALLER'S SAVE AREA
FREEMAIN RU,LV=DATALEN,A=(1) FREE GETMAINED STORAGE IPOXA
LM 14,12,12(13) RESTORE REGISTERS IPOXA
LA 15,4 SET RETURN CODE TO 4 IPOXA
BSM 0,R14 RESTORE CALLER'S MODE IPOXA
EJECT
*
* DATA AREA
*
SMFQNAME DC CL8'IPOSMF01' SIPO50
SMFRNAME DC CL7'DATASET'
*
CMDL DS 0F START COMMAND FORMAT FOR SVC 34
DC AL2(CMDLEN),AL2(00) LENGTH OF STRING
DC C'START DUMPXY,FILENM=XXXXXXXXX ' . CMND + BLANK @P1C
* 456789012345678901234567890123456 . CHECK COLUMNS
CMDLEN EQU *-CMDL LENGTH OF COMMAND STRING
DSNCOFF EQU 24 OFFSET OF DSNAME FIELD IN CMD LIST
*
WTOL WTO 'IEFU29 HAS ISSUED COMMAND ''START DUMPXY,FILENM=XXXXXXXC
XX'' ',ROUTCDE=(1,2,11),MF=L @P1C
* 456789012345678901234567890 1234567890123456789012
WTOLEN EQU *-WTOL LENGTH OF WTO STRING
DSNOFF EQU 51 OFFSET OF DSNAME FIELD IN WTO LIST
ENQLSTX ENQ (SMFQNAME,SMFRNAME,E,,SYSTEM),RET=TEST,MF=L
*
* DATA DSECT - AREA TO BE GETMAIN'ED
*
DATA DSECT
SAVE DS 18F REGISTER SAVE AREA
CMDAREA DS 0F,XL(CMDLEN) AREA FOR COMMAND
WTOAREA DS 0F,XL(WTOLEN) AREA FOR WTO PARM LIST
ENQLIST ENQ (SMFQNAME,SMFRNAME,E,,SYSTEM),RET=TEST,MF=L
LENQLIST EQU *-ENQLIST LENGTH OF WTO STRING
RESERVED DS 4D RESERVED
DATALEN EQU *-DATA EQUATE FOR LENGTH OF DATA DSECT
*
IEFU29 CSECT GET BACK TO CSECT
DS 0D FORCE TO DOUBLE WORD
*
* PATCH AREA
*
MODLEN EQU *-IEFU29 EQUATE FOR MODULE LENGTH(- PATCH)
PTCHLEN EQU ((MODLEN+7)/8+7)/8*8 PATCH AREA LENGTH EQUATE
PTCHLNTH DC Y(PTCHLEN) LENGTH OF PATCH AREA
PTCHBASE DC S(PATCH) BASE DISPLACED ADDRESS OF PATCH
PATCH DC XL(PTCHLEN)'00' PATCH AREA
PRINT OFF
AGO .FINI
.V5J2 ANOP
PRINT ON
Los torpes abren caminos que luego los sabios recorreran.

Saludos y gracias
Tatindgp

tatindgp
Colaborador
Colaborador
Mensajes: 141
Registrado: 25 Feb 2008, 15:09
País: Argentina
Ciudad: Buenos Aires
Ocupación: Analista de desarrollo
Ubicación: BsAS Argentina

Re: Mantenimiento archivos SMF

Mensaje por tatindgp » 04 Feb 2015, 08:39

Segunda parte de la SYS1.SAMPLIB(IEEU29)


IEFU29 TITLE 'SMF SWITCH EXIT ROUTINE '
*/* LIB: SYS1.SAMPLIB(IEEU29) @L1C*/
*/* GDE: IBM MVS CUSTOMIZATION @L1C*/
*/* DOC: THIS IS SAMPLE SMF EXIT ROUTINE THAT IS ENTERED WHEN */
*/* AN SMF DATA SET IS SWITCHED. IT STARTS A DUMP FOR THE */
*/* FULL DATA SET. THIS SAMPLE SMF EXIT IS FOR MVS VERSION 5 */
*/* JES2. */
*/****START OF SPECIFICATIONS*****************************************/
*/* */
*/* $MAC(IEEU29) COMP(SC100) PROD(HBB7709): DUMP START EXIT @P1C*/
*/* */
*/*01* MODULE NAME = IEFU29 */
*/* */
*/*01* DESCRIPTIVE NAME = CUSTOM-BUILT IBM SUPPLIED */
*/* SMF EXIT ROUTINE TO START DUMP OF SMF WHEN SMF */
*/* SWITCH COMMAND IS ISSUED. */
*/* */
* *01* PROPRIETARY STATEMENT= */
*/ **PROPRIETARY_STATEMENT********************************************/
*/ */
*/ LICENSED MATERIALS - PROPERTY OF IBM */
*/ THIS MACRO IS "RESTRICTED MATERIALS OF IBM" */
*/ 5694-A01 (C) COPYRIGHT IBM CORP. 1999, 2004 */
*/ */
*/ STATUS= HBB7709 */
*/ */
*/ **END_OF_PROPRIETARY_STATEMENT*************************************/
*/* */
*/*01* FUNCTION = ISSUES START COMMAND FOR DUMPXY PROCEDURE. */
*/* */
*/*02* OPERATION = ISSUE COMMAND 'START DUMPXY,FILENM=.......' @P1C*/
*/* ISSUE WTO THAT COMMAND HAS BEEN ISSUED. */
*/* */
*/*01* NOTES = */
*/* */
*/*02* DEPENDENCIES = */
*/* */
*/*02* CHARACTER CODE DEPENDENCIES = CHARACTER SET IS EBCDIC. */
*/* REASSEMBLE IF DIFFERENT CHARSET IS NEEDED. */
*/* */
*/*02* RESTRICTIONS = NONE */
*/* */
*/*02* REGISTER CONVENTIONS = STANDARD CONVENTIONS. */
*/* */
*/*03* REGISTERS SAVED = 2-14 */
*/* */
*/*03* REGISTER USAGE = 2-14 */
*/* */
*/* REGISTERS 0 TO 5 = WORK REGISTERS */
*/* REGISTERS 6 TO 11 = UNUSED */
*/* REGISTER 12 = ADDRESSABILITY TO IEFU29 */
*/* CSECT */
*/* REGISTER 13 = ADDRESSIBILITY TO DATA DSECT */
*/* REGISTERS 14,15 = WORK REGISTERS */
*/* */
*/*03* REGISTERS RESTORED = 2-14 */
*/* */
*/*02* PATCH LABEL = PATCH (UNUSED AND INTIALIZED TO */
*/* BINARY ZEROES) */
*/* */
*/*01* MODULE TYPE = PROCEDURE */
*/* */
*/*02* PROCESSOR = ASSEMBLER H VERSION 2 */
*/* */
*/*02* MODULE SIZE = SEE ASSEMBLER LISTING */
*/* */
*/*02* ATTRIBUTES = */
*/* */
*/* LOCATION = LPA */
*/* STATE = SUPERVISOR */
*/* AMODE = 31 */
*/* RMODE = ANY */
*/* KEY = KEY 0 */
*/* MODE = ENABLED */
*/* SERIALIZATION = NONE */
*/* TYPE = REENTRANT */
*/* */
*/* ================================================================ */
*/* */
*/*01* ENTRY POINT = IEFU29 */
*/* */
*/*02* PURPOSE = */
*/* */
*/*02* LINKAGE = */
*/* */
*/*03* CALLERS = */
*/* */
*/*02* INPUT = */
*/* */
*/*02* ENTRY REGISTERS = REG1 POINTS TO FULLWORD ADDRESS OF DATA */
*/* SET NAME TO BE DUMPED. */
*/* */
*/*02* OUTPUT = NONE */
*/* */
*/*02* EXIT NORMAL = AT PROGRAM END VIA BSM 0,14 */
*/* */
*/*03* CONDITIONS = */
*/* */
*/*02* EXIT REGISTERS = */
*/* */
*/*03* RETURN CODES = 0 - EXIT NOPED JES NOT ACTIVE */
*/* 4 - TO PREVENT SMF FROM ISSUING */
*/* MESSAGE IEE362A OR IEE362I */
*/* */
*/*02* EXIT ERROR = NONE */
*/* */
*/*03* CONDITIONS = */
*/* */
*/*02* EXIT REGISTERS = */
*/* */
*/*03* RETURN CODE = FOUR */
*/* */
*/* ================================================================ */
*/* */
*/*01* EXTERNAL REFERENCES = */
*/* */
*/*02* ROUTINES = NONE */
*/* */
*/*02* DATA AREAS = NONE */
*/* */
*/*02* CONTROL BLOCKS = NONE */
*/* */
*/*01* TABLES = NONE */
*/* */
*/*01* MAPPING MACROS = */
*/* */
*/*01* EXECUTABLE MACROS = SAVE, WTO, RETURN, GETMAIN, FREEMAIN, */
*/* IEFSSI */
*/* */
*/*01* SERIALIZATION = NONE */
*/* */
*/*01* MESSAGES = INFORM OPERATOR THAT COMMAND HAS BEEN ISSUED. */
*/* */
*/*01* ABEND CODES = NONE */
*/* */
*/*01* WAIT STATE CODES = NONE */
*/* */
*/*01* SYSGEN = */
*/* LOAD MODULE = IEFU29 */
*/* DISTRIBUTION LIBRARY = ASAMPLIB */
*/* SYSGEN MACRO =N/A */
*/* ALIAS NAME = NONE */
*/* ENTRY POINT = IEFU29 */
*/* TARGET LIBARY = SAMPLIB */
*/* */
*/*01* CHANGE ACTIVITY = THIS MODULE HAS BEEN UPDATED FOR MVS/XA. */
*/* THIS MODULE RUNS IN 31-BIT MODE ABOVE THE */
*/* LINE. AS SVC 34 REQUIRES PARAMETERS BELOW */
*/* THE LINE, STORAGE IS ACQUIRED WITH THE */
*/* LOC=BELOW OPTION. */
*/* */
*/*$MOD=(IEEU29) COMP(SMF) HDLD(MVS): */
*/*$CC= REASONCD,RELEASE#,DATECHGD,CINIT: DESCRIPTION */
*/*$D1= CR24926, 9402,04/18/94, FJB: ALLOW FOR 44 CHARACTER DATA*/
*/*$D1= -------------------------------- SET NAMES AS ALLOWED IN V5.*/
*/* */
*/*$CC= REASONCD RELEASE DTCHGD PGMR: DESCRIPTION */
*/*$L1= SMFEXITS JBB6607 980501 PDSE: CONFORM TO BCP/MVS @L1A*/
*/* STANDARDS. @L1A*/
*/*$P1= PJK0323 HBB7709 030720 PDOO: MSGIEE122I DUE TO EXIT @P1A*/
*/* DEFAULT PARAMETER @P1A*/
*/* (FIN APAR OW56981) @P1A*/
*/* */
*/*01* CHANGE DESCRIPTION = @P1A*/
*/* */
*/* C - Changed symbolic parameter name in start command from @P1A*/
*/* DSNAME to FILENM. This is because DSNAME is a JCL @P1A*/
*/* keyword, and it caused confusion with the overrides. @P1A*/
*/* */
*/****END OF SPECIFICATIONS****V5J2***********************************/
EJECT
IEFU29 CSECT , CSECT NAME DECLARED
IEFU29 AMODE 31 IPOXA
IEFU29 RMODE ANY IPOXA
*
* CONSTANT EQUATES
*
CMDSVC EQU 34 SVC TO ISSUE COMMAND
DSNLEN EQU L'CMDLDSN LENGTH OF DSNAME FIELD @D1C
*
K0 EQU 0 CONSTANT 0
K1 EQU 1 CONSTANT 1
K2 EQU 2 CONSTANT 2
K4 EQU 4 CONSTANT 4
K8 EQU 8 CONSTANT 8
K12 EQU 12 CONSTANT 12
*
* REGISTER EQUATES
*
R00 EQU 00 REGISTER 0
R01 EQU 01 REGISTER 1
R02 EQU 02 REGISTER 2
R03 EQU 03 REGISTER 3
R04 EQU 04 REGISTER 4
R05 EQU 05 REGISTER 5
R06 EQU 06 REGISTER 6
R07 EQU 07 REGISTER 7
R08 EQU 08 REGISTER 8
R09 EQU 09 REGISTER 9
R10 EQU 10 REGISTER 10
R11 EQU 11 REGISTER 11
R12 EQU 12 REGISTER 12
R13 EQU 13 REGISTER 13
R14 EQU 14 REGISTER 14
R15 EQU 15 REGISTER 15
EJECT
SAVE (14,12),,IEFU29_&SYSDATE SAVE REGISTERS
USING IEFU29,R12 SET UP BASE ADDRESSABILITY
USING DATA,R13 SET UP DATA AREA ADDRESSABILITY
LR R12,R15 LOAD BASE REG WITH ENTRY POINT
L R08,K0(R01) SAVE INPUT PARM(DSNAME)
GETMAIN RU,LV=DATALEN,SP=0,LOC=BELOW GET STORAGE IPOXA
ST R13,K4(R01) SAVE CALLER'S SAVE AREA ADDR
ST R01,K8(R13) SAVE MY SAVE AREA ADDRESS
LR R13,R01 LOAD SAVE AREA ADDRESS
IEFSSI REQUEST=QUERY,SUBNAME=SNAME,WORKAREA=WAREA, +
MF=(E,SSILIST) QUERY THE PRIMARY SUBSYSTEM @L1C
LTR R15,R15 WAS IEFSSI SUCCESSFUL? @L1A
BNZ SKIPEXIT NOT ZERO GET OUT @L1A
L R05,WAREA GET SUBSYSTEM AREA ADDR @L1A
LA R04,JQRY_HEADER_LEN GET HEADER LEN @L1A
AR R05,R04 ADD HEADER LENGTH @L1A
USING JQRY_SUBSYS_ENTRY,R05 SET UP ADDRESSABILITY @L1A
TM JQRY_STATUS1,JQRY_ACTIVE1 IS JES ACTIVE? @L1C
BZ SKIPEXIT NOT ACTIVE GET OUT @L1C
MVC ENQLIST(LENQLIST),ENQLSTX LOAD IN MODEL PARM LIST
ENQ MF=(E,ENQLIST) TEST IF RESOURCE IN USE?
LTR R15,R15 WAS THE RESOURCE AVAILABLE?
BNZ SKIPDUMP NO, DO NOT START DUMP
MVC WTOAREA(WTOLEN),WTOL MOVE IN WTO MESSAGE
MVC WTOAREA+DSNOFF(DSNLEN),K0(R08) MOVE DSN IN MESSAGE
MVC CMDAREA(CMDLEN),CMDL MOVE IN START COMMAND
MVC CMDADSN(DSNLEN),K0(R08) MOVE DSN IN START CMD @D1C
SLR R00,R00 CLEAR REG ZERO FOR SVC 34
MGCR CMDAREA ISSUE START COMMAND @D1C
WTO MF=(E,WTOAREA) ISSUE MSG
SKIPDUMP LR R01,R13 LOAD GETMAINED AREA
L R13,K4(R13) POINT TO CALLER'S SAVE AREA
FREEMAIN RU,LV=DATALEN,A=(1) FREE GETMAINED STORAGE IPOXA
LM 14,12,12(13) RESTORE REGISTERS IPOXA
LA 15,4 SET RETURN CODE TO 4 IPOXA
BSM 0,R14 RESTORE CALLER'S MODE IPOXA
SKIPEXIT LR R01,R13 LOAD GETMAINED AREA
L R13,K4(R13) POINT TO CALLER'S SAVE AREA
FREEMAIN RU,LV=DATALEN,A=(1) FREE GETMAINED STORAGE IPOXA
LM 14,12,12(13) RESTORE REGISTERS IPOXA
LA 15,0 SET RETURN CODE TO ZERO IPOJ2
BSM 0,R14 RESTORE CALLER'S MODE IPOXA
EJECT
*
* DATA AREA
*
SMFQNAME DC CL8'IPOSMF01' SIPO50
SMFRNAME DC CL7'DATASET'
SNAME DC CL4'!PRI' SUBSYSTEM NAME FOR IEFSSI @L1A
*
*
CMDL DS 0F START COMMAND FORMAT FOR SVC
DC AL2(CMDLEN) LENGTH OF STRING
DC AL2(00)
DC C'START DUMPXY,FILENM=' COMMAND @P1C
CMDLDSN DC CL44' ' SMF DATASET NAME @D1A
DC C' ' BLANK AT END OF COMMAND @D1A
CMDLEN EQU *-CMDL LENGTH OF COMMAND STRING
*
* N O T E : DO NOT CHANGE LENGTH OF THE FOLLOWING DSNAME AREA @D1A
WTOL WTO 'IEFU29 HAS ISSUED ''START DUMPXY,FILENM=123456789012345C
67890123456789012345678901234'' ',ROUTCDE=(1,2,11),MF=L
* @P1C
WTOLEN EQU *-WTOL LENGTH OF WTO STRING
DSNOFF EQU 43 OFFSET DSNAME FIELD IN WTO LIST @D1C
ENQLSTX ENQ (SMFQNAME,SMFRNAME,E,,SYSTEM),RET=TEST,MF=L
*
* DATA DSECT - AREA TO BE GETMAIN'ED
*
DATA DSECT
SAVE DS 18F REGISTER SAVE AREA
CMDAREA DS 0F,XL(CMDLEN) AREA FOR COMMAND
ORG CMDAREA+(CMDLDSN-CMDL) @D1A
CMDADSN DS CL44' ' @D1A
ORG , @D1A
WTOAREA DS 0F,XL(WTOLEN) AREA FOR WTO PARM LIST
ENQLIST ENQ (SMFQNAME,SMFRNAME,E,,SYSTEM),RET=TEST,MF=L
LENQLIST EQU *-ENQLIST LENGTH OF WTO STRING
IEFSSI MF=(L,SSILIST) LIST FORM OF IEFSSI @L1A
RESERVED DS 4D RESERVED
WAREA DS A INFORMATION RETURNED BY IEFSSI @L1A
DATALEN EQU *-DATA EQUATE FOR LENGTH OF DATA DSECT
*
IEFU29 CSECT GET BACK TO CSECT
DS 0D FORCE TO DOUBLE WORD
*
* PATCH AREA
*
MODLEN EQU *-IEFU29 EQUATE FOR MODULE LENGTH(- PATCH)
PTCHLEN EQU ((MODLEN+7)/8+7)/8*8 PATCH AREA LENGTH EQUATE
PTCHLNTH DC Y(PTCHLEN) LENGTH OF PATCH AREA
PTCHBASE DC S(PATCH) BASE DISPLACED ADDRESS OF PATCH
PATCH DC XL(PTCHLEN)'00' PATCH AREA
*
PRINT OFF @D1A
CVT DSECT=YES MAP THE CVT AREA @D1A
IEFJESCT @D1A
IEFJSQRY MAPS DATA AREA FOR IEFSSI INFO @L1A
IEFJSRC MAPS SSI RETURN AND REASON CODES @L1A
AGO .FINI
.V5J3 ANOP
PRINT ON
IEFU29 TITLE 'SMF SWITCH EXIT ROUTINE '
*/* LIB: SYS1.SAMPLIB(IEEU29) @L1C*/
*/* GDE: IBM MVS CUSTOMIZATION @L1C*/
*/* DOC: THIS IS SAMPLE SMF EXIT ROUTINE THAT IS ENTERED WHEN */
*/* AN SMF DATA SET IS SWITCHED. IT STARTS A DUMP FOR THE */
*/* FULL DATA SET. THIS SAMPLE SMF EXIT IS FOR MVS VERSION 5 */
*/* JES3. */
*/****START OF SPECIFICATIONS*****************************************/
*/* */
*/* $MAC(IEEU29) COMP(SC100) PROD(JBB6607): DUMP START EXIT */
*/* */
*/*01* MODULE NAME = IEFU29 */
*/* */
*/*01* DESCRIPTIVE NAME = CUSTOM-BUILT IBM SUPPLIED */
*/* SMF EXIT ROUTINE TO START DUMP OF SMF WHEN SMF */
*/* SWITCH COMMAND IS ISSUED. */
*/* */
* *01* PROPRIETARY STATEMENT= *
* **PROPRIETARY_STATEMENT********************************************
* *
* *
* LICENSED MATERIALS - PROPERTY OF IBM *
* THIS MACRO IS "RESTRICTED MATERIALS OF IBM" *
* 5694-A01 (C) COPYRIGHT IBM CORP. 1999, 2004 *
* *
* STATUS= HBB7709 *
* *
* **END_OF_PROPRIETARY_STATEMENT*************************************
*/* */
*/*01* FUNCTION = ISSUES START COMMAND FOR DUMPXY PROCEDURE. */
*/* */
*/*02* OPERATION = ISSUE COMMAND 'START DUMPXY,FILENM=.......' @P1C*/
*/* ISSUE WTO THAT COMMAND HAS BEEN ISSUED. */
*/* */
*/*01* NOTES = */
*/* */
*/*02* DEPENDENCIES = */
*/* */
*/*02* CHARACTER CODE DEPENDENCIES = CHARACTER SET IS EBCDIC. */
*/* REASSEMBLE IF DIFFERENT CHARSET IS NEEDED. */
*/* */
*/*02* RESTRICTIONS = NONE */
*/* */
*/*02* REGISTER CONVENTIONS = STANDARD CONVENTIONS. */
*/* */
*/*03* REGISTERS SAVED = 2-14 */
*/* */
*/*03* REGISTER USAGE = 2-14 */
*/* */
*/* REGISTERS 0 TO 5 = WORK REGISTERS */
*/* REGISTERS 6 TO 11 = UNUSED */
*/* REGISTER 12 = ADDRESSABILITY TO IEFU29 */
*/* CSECT */
*/* REGISTER 13 = ADDRESSIBILITY TO DATA DSECT */
*/* REGISTERS 14,15 = WORK REGISTERS */
*/* */
*/*03* REGISTERS RESTORED = 2-14 */
*/* */
*/*02* PATCH LABEL = PATCH (UNUSED AND INTIALIZED TO */
*/* BINARY ZEROES) */
*/* */
*/*01* MODULE TYPE = PROCEDURE */
*/* */
*/*02* PROCESSOR = ASSEMBLER H VERSION 2 */
*/* */
*/*02* MODULE SIZE = SEE ASSEMBLER LISTING */
*/* */
*/*02* ATTRIBUTES = */
*/* */
*/* LOCATION = LPA */
*/* STATE = SUPERVISOR */
*/* AMODE = 31 */
*/* RMODE = ANY */
*/* KEY = KEY 0 */
*/* MODE = ENABLED */
*/* SERIALIZATION = NONE */
*/* TYPE = REENTRANT */
*/* */
*/* ================================================================ */
*/* */
*/*01* ENTRY POINT = IEFU29 */
*/* */
*/*02* PURPOSE = */
*/* */
*/*02* LINKAGE = */
*/* */
*/*03* CALLERS = */
*/* */
*/*02* INPUT = */
*/* */
*/*02* ENTRY REGISTERS = REG1 POINTS TO FULLWORD ADDRESS OF DATA */
*/* SET NAME TO BE DUMPED. */
*/* */
*/*02* OUTPUT = NONE */
*/* */
*/*02* EXIT NORMAL = AT PROGRAM END VIA BSM 0,14 */
*/* */
*/*03* CONDITIONS = */
*/* */
*/*02* EXIT REGISTERS = */
*/* */
*/*03* RETURN CODES = 0 - EXIT NOPED JES NOT ACTIVE */
*/* 4 - TO PREVENT SMF FROM ISSUING */
*/* MESSAGE IEE362A OR IEE362I */
*/* */
*/*02* EXIT ERROR = NONE */
*/* */
*/*03* CONDITIONS = */
*/* */
*/*02* EXIT REGISTERS = */
*/* */
*/*03* RETURN CODE = FOUR */
*/* */
*/* ================================================================ */
*/* */
*/*01* EXTERNAL REFERENCES = */
*/* */
*/*02* ROUTINES = NONE */
*/* */
*/*02* DATA AREAS = NONE */
*/* */
*/*02* CONTROL BLOCKS = NONE */
*/* */
*/*01* TABLES = NONE */
*/* */
*/*01* MAPPING MACROS = */
*/* */
*/*01* EXECUTABLE MACROS = SAVE, WTO, RETURN, GETMAIN, FREEMAIN */
*/* */
*/*01* SERIALIZATION = NONE */
*/* */
*/*01* MESSAGES = INFORM OPERATOR THAT COMMAND HAS BEEN ISSUED. */
*/* */
*/*01* ABEND CODES = NONE */
*/* */
*/*01* WAIT STATE CODES = NONE */
*/* */
*/*01* SYSGEN = */
*/* LOAD MODULE = IEFU29 */
*/* DISTRIBUTION LIBRARY = ASAMPLIB */
*/* SYSGEN MACRO =N/A */
*/* ALIAS NAME = NONE */
*/* ENTRY POINT = IEFU29 */
*/* TARGET LIBARY = SAMPLIB */
*/* */
*/*01* CHANGE ACTIVITY = THIS MODULE HAS BEEN UPDATED */
*/* FOR MVS/XA. THIS MODULE RUNS IN 31-BIT MODE */
*/* ABOVE THE LINE. AS SVC 34 REQUIRES */
*/* PARAMETERS BELOW THE LINE, STORAGE IS */
*/* ACQUIRED WITH THE LOC=BELOW OPTION. */
*/* */
*/*$MOD=(IEEU29) COMP(SMF) HDLD(MVS): */
*/*$CC= REASONCD,RELEASE#,DATECHGD,CINIT: DESCRIPTION */
*/*$D1= CR24926, 9402,04/18/94, FJB: ALLOW FOR 44 CHARACTER DATA*/
*/*$D1= -------------------------------- SET NAMES AS ALLOWED IN V5.*/
*/* */
*/*$CC= REASONCD RELEASE DTCHGD PGMR: DESCRIPTION */
*/*$L1= SMFEXITS JBB6607 980501 PDSE: CONFORM TO BCP/MVS @L1A*/
*/* STANDARDS. @L1A*/
*/*$P1= PJK0323 HBB7709 030720 PDOO: MSGIEE122I DUE TO EXIT @P1A*/
*/* DEFAULT PARAMETER @P1A*/
*/* (FIN APAR OW56981) @P1A*/
*/* */
*/*01* CHANGE DESCRIPTION = @P1A*/
*/* */
*/* C - Changed symbolic parameter name in start command from @P1A*/
*/* DSNAME to FILENM. This is because DSNAME is a JCL @P1A*/
*/* keyword, and it caused confusion with the overrides. @P1A*/
*/* */
*/****END OF SPECIFICATIONS****V5J3***********************************/
EJECT
IEFU29 CSECT , CSECT NAME DECLARED
IEFU29 AMODE 31 IPOXA
IEFU29 RMODE ANY IPOXA
*
* CONSTANT EQUATES
*
CMDSVC EQU 34 SVC TO ISSUE COMMAND
DSNLEN EQU L'CMDLDSN LENGTH OF DSNAME FIELD @D1C
*
K0 EQU 0 CONSTANT 0
K1 EQU 1 CONSTANT 1
K2 EQU 2 CONSTANT 2
K4 EQU 4 CONSTANT 4
K8 EQU 8 CONSTANT 8
K12 EQU 12 CONSTANT 12
K16 EQU 16 CONSTANT 16
*
* REGISTER EQUATES
*
R00 EQU 00 REGISTER 0
R01 EQU 01 REGISTER 1
R02 EQU 02 REGISTER 2
R03 EQU 03 REGISTER 3
R04 EQU 04 REGISTER 4
R05 EQU 05 REGISTER 5
R06 EQU 06 REGISTER 6
R07 EQU 07 REGISTER 7
R08 EQU 08 REGISTER 8
R09 EQU 09 REGISTER 9
R10 EQU 10 REGISTER 10
R11 EQU 11 REGISTER 11
R12 EQU 12 REGISTER 12
R13 EQU 13 REGISTER 13
R14 EQU 14 REGISTER 14
R15 EQU 15 REGISTER 15
EJECT
SAVE (14,12),,IEFU29_&SYSDATE SAVE REGISTERS
USING IEFU29,R12 SET UP BASE ADDRESSABILITY
USING DATA,R13 SET UP DATA AREA ADDRESSABILITY
LR R12,R15 LOAD BASE REG WITH ENTRY POINT
L R08,K0(R01) SAVE PTR TO INPUT PARM(DSNAME)
GETMAIN RU,LV=DATALEN,SP=0,LOC=BELOW GET STORAGE IPOXA
ST R13,K4(R01) SAVE CALLER'S SAVE AREA ADDR
ST R01,K8(R13) SAVE MY SAVE AREA ADDRESS
LR R13,R01 LOAD SAVE AREA ADDRESS
MVC ENQLIST(LENQLIST),ENQLSTX LOAD IN MODEL PARM LIST
ENQ MF=(E,ENQLIST) TEST IF RESOURCE IN USE?
LTR R15,R15 WAS THE RESOURCE AVAILABLE?
BNZ SKIPDUMP NO, DO NOT START DUMP
MVC WTOAREA(WTOLEN),WTOL MOVE IN WTO MESSAGE
MVC WTOAREA+DSNOFF(DSNLEN),K0(R08) MOVE DSNAME IN MSG
MVC CMDAREA(CMDLEN),CMDL MOVE IN START COMMAND
MVC CMDADSN(DSNLEN),K0(R08) MOVE DSN IN START CMD @D1C
SLR R00,R00 CLEAR REG ZERO FOR SVC 34
MGCR CMDAREA ISSUE START COMMAND @D1C
WTO MF=(E,WTOAREA) ISSUE MSG
SKIPDUMP LR R01,R13 LOAD GETMAINED AREA
L R13,K4(R13) POINT TO CALLER'S SAVE AREA
FREEMAIN RU,LV=DATALEN,A=(1) FREE GETMAINED STORAGE IPOXA
LM 14,12,12(13) RESTORE REGISTERS IPOXA
LA 15,4 SET RETURN CODE TO 4 IPOXA
BSM 0,R14 RESTORE CALLER'S MODE IPOXA
EJECT
*
* DATA AREA
*
SMFQNAME DC CL8'IPOSMF01' SIPO50
SMFRNAME DC CL7'DATASET'
*
*
CMDL DS 0F START COMMAND FORMAT FOR SVC
DC AL2(CMDLEN) LENGTH OF STRING
DC AL2(00)
DC C'START DUMPXY,FILENM=' COMMAND @P1C
CMDLDSN DC CL44' ' SMF DATASET NAME @D1A
DC C' ' BLANK AT ENF OF COMMAND @D1A
CMDLEN EQU *-CMDL LENGTH OF COMMAND STRING
*
* N O T E : DO NOT CHANGE LENGTH OF THE FOLLOWING DSNAME AREA @D1A
WTOL WTO 'IEFU29 HAS ISSUED ''START DUMPXY,FILENM=123456789012345C
67890123456789012345678901234'' ',ROUTCDE=(1,2,11),MF=L
* @P1C
WTOLEN EQU *-WTOL LENGTH OF WTO STRING
DSNOFF EQU 43 OFFSET DSNAME FIELD IN WTO LIST @D1C
ENQLSTX ENQ (SMFQNAME,SMFRNAME,E,,SYSTEM),RET=TEST,MF=L
*
* DATA DSECT - AREA TO BE GETMAIN'ED
*
DATA DSECT
SAVE DS 18F REGISTER SAVE AREA
CMDAREA DS 0F,XL(CMDLEN) AREA FOR COMMAND
ORG CMDAREA+(CMDLDSN-CMDL) @D1A
CMDADSN DS CL44' ' @D1A
ORG , @D1A
WTOAREA DS 0F,XL(WTOLEN) AREA FOR WTO PARM LIST
ENQLIST ENQ (SMFQNAME,SMFRNAME,E,,SYSTEM),RET=TEST,MF=L
LENQLIST EQU *-ENQLIST LENGTH OF WTO STRING
RESERVED DS 4D RESERVED
DATALEN EQU *-DATA EQUATE FOR LENGTH OF DATA DSECT
*
IEFU29 CSECT GET BACK TO CSECT
DS 0D FORCE TO DOUBLE WORD
*
* PATCH AREA
*
MODLEN EQU *-IEFU29 EQUATE FOR MODULE LENGTH(- PATCH)
PTCHLEN EQU ((MODLEN+7)/8+7)/8*8 PATCH AREA LENGTH EQUATE
PTCHLNTH DC Y(PTCHLEN) LENGTH OF PATCH AREA
PTCHBASE DC S(PATCH) BASE DISPLACED ADDRESS OF PATCH
PATCH DC XL(PTCHLEN)'00' PATCH AREA
PRINT OFF
AGO .FINI
.FINI ANOP
PRINT ON
END IEFU29



Para mi o tiene que ver con algo dentro de la exit o con la carga de la misma en el arranque :leer: :bronca:
Los torpes abren caminos que luego los sabios recorreran.

Saludos y gracias
Tatindgp

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 542
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Mantenimiento archivos SMF

Mensaje por Vicente » 04 Feb 2015, 09:12

Hola tatindgp
Parece que todo funciona correctamente.
Según el manual de mensajes: MVS System Messages Volume 7 (IEB - IEE)
La explicación de IEE362A SMF ENTER DUMP FOR SYS1.MANn es la siguiente:

Explanation: The SMF SYS1.MANn data set is ready to be dumped; this message is issued in response to either a
HALT EOD or a SWITCH SMF command being entered, or if an alternate data set was not empty at SMF Initialization
Time.
Operator response: Request the SMF dump program for the data set.

Es tu mandato z EOD (End Of Day) el que cambia el estado del fichero.
La solución que da el manual es provocar el DUMP, o en tu caso el CLEAR, manualmente..

Un saludo

Leamos un poco:
Para más información puedes consultar el manual MVS System Commands cuando explica el mandato HALT EOD
También puedes consultar la sección SMF Halt Processing del manual MVS System Management Facilities
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

ularrieta
Usuario
Usuario
Mensajes: 20
Registrado: 21 Ene 2015, 20:23
País: España
Ciudad: Bilbao
Ocupación: IT Specialist

Re: Mantenimiento archivos SMF

Mensaje por ularrieta » 04 Feb 2015, 09:38

Epa, epa, para el carro un momento !!! :P

Si con hacer in I SMF el sistema te funciona, entonces la EXIT funciona perfectamente. El problema que tienes es en la IPL (como lo tenemos todos). Ese procedimiento DUMPXY se activa via JES2, lo que significa que si el JES2 NO está arrancado en el momento de pedir el DUMP, es lógico que la EXIT no te capture el mensaje (o si que lo captura, pero no tiene posibilidad de lanzar el DUMPXY porque no tiene a donde lanzarlo).

Por otra parte, cuando estas parando máquina, pasa lo mismo. Por lo general, cuando haces un Z EOD el SMF cambia de miembro tambien, por lo que al no haber un JES2 activo, te sale el mismo mensaje.

Eso nos pasa a todos, por eso, en cuanto hacemos IPL lanzamos un i SMF que pase por todos los SYS1.MANx en el arranque (pero despues de arrancar el JES2, obviamente), para que limpie todos los SYS1.MANx antes de entrar en producción y lanzar otros productos como DB2, CICS, etc.

No se si Vicente tiene otro método ditinto (ya te digo que el mio es ciclar los 3 SYS1.MANx a GDG via PROC que llama 3 veces al I SMF), porque cada instalación es un mundo, pero lo que te pasa no es un error de la EXIT, es una consecuencia lógica por no tener el subsistema JES arrancado.
Recetas Hercules, z/OS y AS/400 en http://www.mainframecorner.com

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 542
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Mantenimiento archivos SMF

Mensaje por Vicente » 04 Feb 2015, 11:27

Hola Urtzi,
En mi caso DUMPXY contiene lo siguiente

Código: Seleccionar todo

//IEFPROC EXEC PGM=SMFCOPIA,PARM='&FILENM.' 
//STEPLIB DD DSN=SISTEMAS.LOAD,DISP=SHR     
//SYSPRINT DD SYSOUT=*                      
//LECTORA DD SYSOUT=(*,INTRDR)              
El programa SMFCOPIA submite un JCL con tres pasos:
El primero ejecuta el programa IFASMFDP para hacer un volcado de todos los registros a un fichero secuencial en disco
El segundo ejecuta un IEBGENER
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 542
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Mantenimiento archivos SMF

Mensaje por Vicente » 04 Feb 2015, 11:33

Sorry, le di a "enviar" antes de tiempo.
Decía que
El segundo ejecuta un IEBGNER para añadir el fichero secuencial a otro en cinta, que contiene todos los datos de SMF del semestre.
El tercero hace lo mismo que el segundo pero a otra cinta.

Qué ficheros en cinta son los que reciben los registros, lo decide el programa SMFCOPIA en función del semestre en el que estemos.
Posteriormente, cada mes sacamos, desde estas cintas estadísticas.

Si te interesa te podría enviar JCLs y código fuente.
Un saludo
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

tatindgp
Colaborador
Colaborador
Mensajes: 141
Registrado: 25 Feb 2008, 15:09
País: Argentina
Ciudad: Buenos Aires
Ocupación: Analista de desarrollo
Ubicación: BsAS Argentina

Re: Mantenimiento archivos SMF

Mensaje por tatindgp » 04 Feb 2015, 13:22

Vicente y ularrieta,
Ahi lo hice como decia el compañero ularrieta,y me funciono, en el ADCD.Z110.PARMLIB(COMMNDDC) le agregue que llame 3 veces al DUMPXY uno por cada archivo sys1.man para que les haga el clear lo necesiten o no:

ADCD.Z110.PARMLIB(COMMNDDC) - 01.04
===>
***************************** Top of Data
COM='S JES2,PARM='COLD,NOREQ''
COM='S VLF,SUB=MSTR'
COM='S VTAM'
COM='S VTAMDB'
COM='S DLF,SUB=MSTR'
COM='DD ADD,VOL=ZASYS1'
COM='DD NAME=SYS1.&SYSNAME..DMP&SEQ'
COM='DD ALLOC=ACTIVE'
COM='S LOGRECFA'
COM='S DUMPXY,FILENM=SYS1.MAN1'
COM='S DUMPXY,FILENM=SYS1.MAN2'
COM='S DUMPXY,FILENM=SYS1.MAN3'
Los torpes abren caminos que luego los sabios recorreran.

Saludos y gracias
Tatindgp

ularrieta
Usuario
Usuario
Mensajes: 20
Registrado: 21 Ene 2015, 20:23
País: España
Ciudad: Bilbao
Ocupación: IT Specialist

Re: Mantenimiento archivos SMF

Mensaje por ularrieta » 05 Feb 2015, 05:46

Pues Vicente, si no te importa, sería muy instructivo por mi parte saber como has resuelto el SMFCOPIA y su contenido, asi como tu DUMPXY entero, ya que en mi caso por alguna razón que todavía no alcanzo a entender, el Internal Reader me daba error y por eso recurrimos a trabajar con GDGs directamente porque era mas rapido, mas interesante y con menos peligro que hacer un MOD constante a un dataset cuando puedes tener registros desordenados.

Si tienes tiempo y ademas cuentas un poco el workflow del proceso que utilizas, me seria de gran ayuda.

Saludos,
Recetas Hercules, z/OS y AS/400 en http://www.mainframecorner.com

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 542
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Mantenimiento archivos SMF

Mensaje por Vicente » 05 Feb 2015, 10:31

Hola tatindgp,
me alegro de que hayas resuelto el problema

Hola Urtzi,
Mi implementación de las copias de los ficheros de SMF, según se iban llenando, estaba muy condicionada porque necesitamos almacenar un minimo de un año de datos y no tenemos espacio en disco suficiente, de ahí lo de usar cintas; y guardo un semestre en una cinta (por duplicado) por que también el número de cintas de que disponemos está muy limitado.

Y ahora mi DUMPXY completo:

Código: Seleccionar todo

//DUMPXY  PROC FILENM='SYS1.MANN'                                   
//*                                                                 
//* EJECUTA EL PROGRAMA SMFCOPIA      
//* QUE SUBMITE EL JOB SMFCOPIA QUE COPIA EL SMF                    
//*                                                                 
//IEFPROC EXEC PGM=SMFCOPIA,PARM='&FILENM.'                         
//STEPLIB DD DSN=SISTEMAS.LOAD,DISP=SHR                             
//SYSPRINT DD SYSOUT=*                                              
//LECTORA DD SYSOUT=(*,INTRDR)                                      
//*                                                                 
A continuación el JCL de compilación y fuente del programa SMFCOPIA
El JCL que es submitido para copiar a cinta lo puedes ver dentro del código fuente del programa.
Respecto al workflow que pides no hay nada más que ver el JCL que se submite; con la salvedad de que
la DSN del fichero en la cinta la construye el programa en fucnión de la fecha; Una DSN nueva para cada semestre.

Código: Seleccionar todo

//ASMSMFCO JOB CLASS=0,MSGLEVEL=(1,1),MSGCLASS=A,NOTIFY=&SYSUID      
//*                                                                  
//PASO1 EXEC PROC=ASMACL,PARM.C='NODECK',                            
//      PARM.L=(XREF,LIST,LET,NCAL)                                  
//C.SYSIN DD *                                                       
SMFCOPIA START                                                       
SMFCOPIA AMODE 24                                                    
SMFCOPIA RMODE 24                                                    
*                                                                    
*  PROGRAMA QUE SUBMITE EL JCL DE COPIA DE LOS FICHEROS SMF          
*  SE EJECUTA EN LA STARTED TASK DUMPXY, QUE LE PASA COMO PARAMETRO  
* LA DSN DEL FICHERO A COPIAR; LA CUAL A SU VEZ LE LLEGA A DUMPXY    
* POR MEDIO DE LA SENTENCIA 'S DUMPXY,DSN' DADA POR LA EXIT IEFU29'  
*                                                                    
*  EL PROGRAMA LEE EL PARAMETRO QUE LE LLEGA (DSN) Y LA FECHA ACTUAL 
* PONE ESTOS EN EL JCL QUE SUBMITE PARA COPIAR                       
*                                                                    
* NOMBRES DE LOS REGISTROS                                           
*                                                                    
R00      EQU   00                      REGISTRO 0                    
R01      EQU   01                      REGISTRO 1                    
R02      EQU   02                      REGISTRO 2                    
R03      EQU   03                      REGISTRO 3                    
R04      EQU   04                      REGISTRO 4                       
R05      EQU   05                      REGISTRO 5                       
R06      EQU   06                      REGISTRO 6                       
R07      EQU   07                      REGISTRO 7                       
R08      EQU   08                      REGISTRO 8                       
R09      EQU   09                      REGISTRO 9                       
R10      EQU   10                      REGISTRO 10                      
R11      EQU   11                      REGISTRO 11                      
R12      EQU   12                      REGISTRO 12                      
R13      EQU   13                      REGISTRO 13                      
R14      EQU   14                      REGISTRO 14                      
R15      EQU   15                      REGISTRO 15                      
*                                                                       
*                                                                       
         STM   R14,R12,12(R13)  SALVA REGISTROS EN SAVEAREA             
         USING SMFCOPIA,R02     REGISTRO BASE EL 2                      
         LR    R02,R15          CARGA REG BASE CON PRINCIPIO PROGRAMA   
* ENLACE DE SAVEAREAS                                                   
         ST    R13,SAVEAREA+4   GUARDO DIRC SAVEAREA DEL LLAMADOR EN    
         LR    R12,R13          MI SAVEAREA                             
         LA    R13,SAVEAREA     CARGO REG 13 CON DIREC DE MI SAVEAREA   
         ST    R13,8(R12)       Y LA PONGO EN SAVEAREA DEL QUE ME LLAMA 
*                                                                       
* COMIENZO DEL PROGRAMA                                                 
*                                                                       
* LECTURA DEL PARAMETRO PARM= DONDE VIENE LA DSN DEL FICHERO A COPIAR   
*                                                                    
         DS    0H                                                    
         L     R03,0(R01)          CARGO EN R3 LA DIREC DEL PARAMETRO
         LH    R06,0(R03)          CARGA LONG DE PARM EN R6          
         S     R06,UNO                                               
         EX    R06,MOVER           MVC DSN1+11(0),2(R03)  LONG=R06   
*                                                                    
* LEE LA FECHA, LA DESEMPAQUETA Y MUEVE A LA DSN EL AÑO Y EL MES     
*                                                                    
         TIME  DEC,FECHAP,ZONE=LT,LINKAGE=SYSTEM,DATETYPE=YYYYMMDD   
         MVC   FECHAPW,FECHAP+8       QUITA LA HORA                  
         UNPK  FECHAU,FECHAPW         DESEMPAQUETA LA FECHA          
         MVC   ANO,FECHAU             COGE EL AÑO                    
         MVC   MES,FECHAU+4           COGE EL MES                    
*  CALCULO DEL TRIMESTRE / SEMESTRE                                  
         CLC   MES,=C'03'                                            
         BH    TRIMEST2                                              
         MVC   TRIMES,=C'1'                                          
         MVC   SEMEST,=C'1'                                          
         B     CREADSN                                               
TRIMEST2 CLC   MES,=C'06'                                            
         BH    TRIMEST3                                              
         MVC   TRIMES,=C'2'                                          
         MVC   SEMEST,=C'1'                                          
         B     CREADSN                                               
TRIMEST3 CLC   MES,=C'09'                                            
         BH    TRIMEST4                                           
         MVC   TRIMES,=C'3'                                       
         MVC   SEMEST,=C'2'                                       
         B     CREADSN                                            
TRIMEST4 MVC   TRIMES,=C'4'                                       
         MVC   SEMEST,=C'2'                                       
*                                                                 
CREADSN  MVC   DSN2+23(4),ANO         MUEVE A LA DSN AÑO          
         MVC   DSN2+28(1),SEMEST      MUEVE A LA DSN TRIMESTRE    
         MVC   DSN3+23(4),ANO         MUEVE A LA DSN AÑO          
         MVC   DSN3+28(1),SEMEST      MUEVE A LA DSN SEMESTRE     
                                                                  
         OPEN  (LECTORA,(OUTPUT))       OPEN INTERNAL READER FILE.
*                                                                 
* PASA CADA FICHA DEL JOB A LA INTERNAL READER.                   
*                                                                 
SUBMIT   DS    0H                                                 
         LA    4,JOB                    INIT LOOP                 
SUBMIT1  DS    0H                                                 
         MVC   CARD(50),0(4)                                      
         PUT   LECTORA,CARD                                       
         LA    4,50(,4)                                           
         CLI   0(4),EOJ                 LAST CARD PROCESSED ?     
         BNE   SUBMIT1                                            
*                                                                 
* CIERRA LA INTERNAL READER                                       
*                                                                      
         CLOSE (LECTORA)                CLOSE INTERNAL READER.         
*                                                                      
*                                                                      
* PONER CODIGO RC=0                                                    
         L     R03,SAVEAREA+4    CARGO DIREC SAVEAREA DEL QUE ME LLAMA 
         LA    R04,0             PONGO 3 EN REG 4                      
         ST    R04,16(R03)        PONGO REG 4 EN REG 15 DE SAVEAREA DEL
*                                                                      
* RESTAURAR REGISTROS Y TERMINAR EL PROGRAMA                           
*                                                                      
                                                                       
FIN      L     R13,SAVEAREA+4   RECUPERO DIREC SAVEAREA DEL QUE ME     
         LM    R14,R12,12(R13)  LLAMA Y RESTAURO LOS REGISTROS         
         BR    R14              TERMINAR                               
*                                                                      
* READER DCB                                                           
*                                                                      
         PRINT NOGEN                                                   
LECTORA  DCB   DDNAME=LECTORA,LRECL=80,BLKSIZE=80,MACRF=PM,DSORG=PS    
         PRINT GEN                                                     
*                                                                      
* JCL DEL JOB A SUBMITIR                                               
*                                                                      
EOJ      EQU  X'00'                                                    
JOB      DS   0F                                                       
         DC   CL50'//SMFCOPIA JOB CLASS=C,MSGCLASS=A,'        
         DC   CL50'// MSGLEVEL=(1,1)'                         
         DC   CL50'//DELETE EXEC PGM=IDCAMS'                  
         DC   CL50'//SYSPRINT DD SYSOUT=*'                    
         DC   CL50'//SYSIN DD *'                              
         DC   CL50'  DELETE (WORKP.SMFCOPIA.NOBORRAR) PURGE'  
         DC   CL50'/*'                                        
         DC   CL50'//* VOLCADO DE REGISTROS SMF A DISCO'      
         DC   CL50'//ADISCO EXEC PGM=IFASMFDP,REGION=6M'      
         DC   CL50'//SYSPRINT DD  SYSOUT=*'                   
         DC   CL50'//DUMPIN   DD  DDNAME=IEFRDER'             
         DC   CL50'//IEFRDER  DD  DISP=SHR,'                  
DSN1     DC   CL50'//  DSNAME='                               
         DC   CL50'//SYSIN    DD  DUMMY'                      
         DC   CL50'//DUMPOUT DD DISP=(MOD,CATLG),'            
         DC   CL50'//  BLKSIZE=32000,LRECL=32760,RECFM=VBS,'  
         DC   CL50'//  UNIT=SYSDA,EXPDT=99365,'               
         DC   CL50'//  SPACE=(CYL,(300,300)),'                
         DC   CL50'//  DSN=WORKP.SMFCOPIA.NOBORRAR'           
         DC   CL50'// IF ADISCO.ABEND OR ADISCO.RC > 0 THEN'  
         DC   CL50'//MENSAJE1 EXEC PGM=IPOWTO'                
         DC   CL50'//STEPLIB DD DSN=SISTEMAS.LOAD,DISP=SHR'   
         DC   CL50'//SYSIN    DD *'                           
         DC   CL50'  SMFCOPIA MAL, AVISA URGENTE SISTEMAS'    
         DC   CL50'/*'                                        
         DC   CL50'// ELSE'                                   
         DC   CL50'//* COPIA A LA CINTA SEMESTRAL'            
         DC   CL50'//ACINTA1 EXEC PGM=IEBGENER'               
         DC   CL50'//SYSPRINT DD SYSOUT=* '                   
         DC   CL50'//SYSUT1 DD DISP=SHR,'                     
         DC   CL50'//  DSN=WORKP.SMFCOPIA.NOBORRAR'           
         DC   CL50'//SYSUT2 DD UNIT=ROBOT3,LABEL=(1,SL), '    
         DC   CL50'//  EXPDT=99366,DISP=(MOD,CATLG), '        
DSN2     DC   CL50'//  DSN=SIST.SMFCOPIA.AXXXXSX'             
         DC   CL50'//SYSIN DD DUMMY '                         
         DC   CL50'// IF ACINTA1.ABEND OR ACINTA1.RC > 0 THEN'
         DC   CL50'//MENSAJE2 EXEC PGM=IPOWTO'                
         DC   CL50'//STEPLIB DD DSN=SISTEMAS.LOAD,DISP=SHR'   
         DC   CL50'//SYSIN    DD *'                           
         DC   CL50'  SMFCOPIA MAL, AVISA URGENTE SISTEMAS'    
         DC   CL50'/*'                                        
         DC   CL50'// ENDIF'                                  
         DC   CL50'//* COPIA A LA CINTA SEMESTRAL DE BACKUP'  
         DC   CL50'//ACINTA2 EXEC PGM=IEBGENER'               
         DC   CL50'//SYSPRINT DD SYSOUT=* '                   
         DC   CL50'//SYSUT1 DD DISP=SHR,'                     
         DC   CL50'//  DSN=WORKP.SMFCOPIA.NOBORRAR'           
         DC   CL50'//SYSUT2 DD UNIT=ROBOT3,LABEL=(1,SL), '    
         DC   CL50'//  EXPDT=99366,DISP=(MOD,CATLG), '        
DSN3     DC   CL50'//  DSN=SIST.SMFCOPIA.AXXXXSX.COPIA'       
         DC   CL50'//SYSIN DD DUMMY '                         
         DC   CL50'//*'                                       
         DC   CL50'// IF ACINTA2.ABEND OR ACINTA2.RC > 0 THEN'
         DC   CL50'//MENSAJE3 EXEC PGM=IPOWTO'                
         DC   CL50'//STEPLIB DD DSN=SISTEMAS.LOAD,DISP=SHR'   
         DC   CL50'//SYSIN    DD *'                           
         DC   CL50'  SMFCOPIA MAL, AVISO URGENTE A SISTEMAS'  
         DC   CL50'/*'                                        
         DC   CL50'// ENDIF'                                  
         DC   CL50'// ENDIF'                                  
         DC   AL1(EOJ)                                        
*                                                             
* DEFINICION DE DATOS                                         
*                                                             
         DS   0F                                              
SAVEAREA DS CL72                                              
MOVER    MVC   DSN1+11(0),2(R03)                              
FECHAP   DS CL16                                              
FECHAPW  DS CL5                                               
FECHAU   DS CL9                                               
ANO      DS CL4                                               
MES      DS CL2                                               
CARD     DC CL80' '                                           
UNO      DC X'00000001'                                       
TRIMES   DS CL1                                               
SEMEST   DS CL1                                               
         END                                                  
/*                                                            
//L.SYSLMOD DD DSN=SISTEMAS.LOAD(SMFCOPIA),DISP=SHR
//L.SYSPRINT DD SYSOUT=*                           
Espero que te sirva de algo
En cuanto a tu problema con la Internal Reader, si quieres podemos trabajar en ello juntos, quizas en otro hilo.
Un saludo
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

Responder