Sentencias de control DSN1PRNT de muestra
Utilice las sentencias de control de muestra como modelos para desarrollar sus propias sentencias de control DSN1PRNT.
Ejemplo 1: Imprimir un conjunto de datos y dar formato al resultado
El siguiente ejemplo especifica que la utilidad DSN1PRNT debe imprimir el conjunto de datos identificado por la instrucción DD ( SYSUT1 ) y que la salida debe formatearse. Este conjunto de datos debe imprimirse en el conjunto de datos identificado por la sentencia DD SYSPRINT. El calificador de quinto nivel en el nombre del conjunto de datos puede ser I0001 o J0001. Este ejemplo utiliza I0001.
//jobname JOB acct info
//RUNPRNT EXEC PGM=DSN1PRNT,PARM='PRINT,FORMAT'
//STEPLIB DD DSN=prefix.SDSNLOAD
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD DSN=DSNCAT.DSNDBC.DSNDB01.SYSUTILX.I0001.A001,DISP=SHR
Ejemplo 2: Impresión de un índice sin particiones con un tamaño de pieza de 64 MB
El siguiente ejemplo especifica que DSN1PRNT debe imprimir las primeras 16 páginas de la pieza 61 de un índice no particionado con un tamaño de pieza de 64 MB. Las páginas que se van a imprimir se identifican mediante la opción IMPRIMIR. Estos valores de página se determinan de la siguiente manera: Un conjunto de datos de 64 MB contiene X'4000' páginas de 4 KB. El decimal 61 es X'3D'. El número de página de la primera página de la pieza 61 es 4000*( 3D-1 ) = 4000*3C = F0000. Para imprimir las últimas 16 páginas de la pieza 61, especifique PARM=(PRINT(F3FF0,F3FFF), ...).
El calificador de quinto nivel en el nombre del conjunto de datos puede ser I0001 o J0001. Este ejemplo utiliza I0001.
//PRINT2 EXEC PGM=DSN1PRNT,
// PARM=(PRINT(F0000,F000F),FORMAT,PIECESIZ(64M))
//SYSUDUMP DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD DISP=OLD,DSN=DSNCAT.DSNDBD.MMRDB.NPI1.I0001.A061
Ejemplo 3: Impresión de una sola página de una copia de imagen
El siguiente ejemplo especifica que DSN1PRNT debe imprimir una página de una copia de imagen. La copia de la imagen se identifica mediante la declaración DD ( SYSUT1 ). La opción IMPRIMIR especifica que la única página que se va a imprimir es X'1'.
//STEP2 EXEC PGM=DSN1PRNT,
// PARM='PRINT(1),FORMAT,INLCOPY'
//STEPLIB DD DSN=DB2A.SDSNLOAD,DISP=SHR
//SYSUDUMP DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD DSN=HUHYU205.L1.STEP1.DD2,DISP=SHR
Ejemplo 4: Impresión de un conjunto de datos dividido
El siguiente ejemplo especifica que DSN1PRNT debe imprimir el conjunto de datos identificado por la instrucción DD ( SYSUT1 ). Dado que este conjunto de datos es un espacio de tabla que se definió con la opción LARGE, la opción DSSIZE( 4G ) se especifica en la lista de parámetros para DSN1PRNT. En su lugar, podría especificar la opción LARGE en esta lista, pero se recomienda especificar DSSIZE( 4G ). Este espacio de tabla de entrada tiene 260 particiones, como indica la opción NUMPARTS.
//RUNPRNT1 EXEC PGM=DSN1PRNT,
// PARM='DSSIZE(4G),PRINT,NUMPARTS(260),FORMAT'
//STEPLIB DD DSN=DB2A.SDSNLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD DSN=DSNCAT.DSNDBC.DBOM0301.TPOM0301.I0001.A259,DISP=SHR
/*
Ejemplo 5: Imprimir un intervalo de páginas de una partición específica
Es difícil determinar los números de página para una partición específica de un espacio de tabla particionado.
Este ejemplo describe una forma sencilla de utilizar DSN1PRNT sin necesidad de calcular los números de página.
- Ejecute DSN1PRNT en la partición que desea procesar sin especificar un rango de IMPRESIÓN. Establezca la opción FORMATO en NODATPGS. Las páginas de datos no se imprimen, lo que reduce el uso de espacio de bobina.
// EXEC PGM=DSN1PRNT, // PARM='FORMAT,NODATPGS,NUMPARTS(8)' //SYSUT1 DD DSN=DSNT6USR.DSNDBC.V9DS306.XV9D0000.I0001.A008,DISP=SHRLa copia impresa incluye los números de página. Utilice estos números de página para configurar otro trabajo de e DSN1PRNT, utilizando los números de página adecuados.
- Ejecute DSN1PRNT en la partición 8 especificando su rango de IMPRESIÓN
// EXEC PGM=DSN1PRNT, // PARM='PRINT(xx000000,xx000020),FORMAT,NUMPARTS(8)' //SYSUT1 DD DSN=DSNT6USR.DSNDBC.V9DS306.XV9D0000.I0001.A008,DISP=SHREl rango de páginas debe especificarse en formato hexadecimal.
Ejemplo 6: Especificación de salida Unicode para DSN1PRNT
Cuando especifique la opción UNICODE para DSN1PRNT, no verá caracteres Unicode no latinos, como los caracteres japoneses, en su salida. Cuando especifica la opción UNICODE, DSN1PRNT toma los datos hexadecimales y los formatea como ASCII en lugar del EBCDIC predeterminado.
Puede surgir un problema cuando los datos que desea que maneje DSN1PRNT están en UTF-16. En el caso de los datos e UTF-16, DSN1PRNT toma solo el segundo byte de los datos y formatea esa parte de los datos como ASCII. Por lo tanto, es posible que el resultado no sea correcto. Por ejemplo, los valores hexadecimales de la UTF-16 X'0030' y X'1130' se muestran como 0, porque se ignora el primer byte de cada uno (respectivamente, «00» y «11»). La parte restante («30») se interpreta como un ASCII 0. En UTF-16, X'0030' es el valor hexadecimal de 0, pero X'1130' es el valor hexadecimal de un carácter hangul.
En el siguiente ejemplo de DSN1PRNT, observe los tres valores hexadecimales en negrita: X'0041 ', X'0141' y X'0241 '. El resultado de estos tres valores es A.A.A, aunque cada uno de ellos corresponde a caracteres diferentes en UTF-16. (X'0041' es A, X'0141' es Ł y X'0241' es el carácter latino mayúsculo para la oclusión glotal)
//STEP1 EXEC PGM=DSN1PRNT,
// PARM='FORMAT,PRINT(002),UNICODE'
//STEPLIB DD DSN=DB2A.DSNLOAD,DISP=SHR
//SYSUDUMP DD SYSOUT=A
//SYSPRINT DD SYSOUT=A
//SYSOUT DD SYSOUT=A
//SYSABEND DD SYSOUT=A
//SYSUT1 DD DSN=TESTCAT.DSNDBC.DBED2101.TPED2101.I0001.A001,DISP=SHR
/*
DSN1999I START OF DSN1PRNT FOR JOB DSN1PRNT RUNPRNT9
DSN1989I DSN1PRNT IS PROCESSED WITH THE FOLLOWING OPTIONS:
4K/NO IMAGECOPY/NUMPARTS = 0/ FORMAT/NO EXPAND/ PRINT/NO VALUE/ / /
DSSIZE= /PIECESIZ= /UNICODE/
DSN1998I INPUT DSNAME = TESTCAT.DSNDBC.DBED2101.TPED2101.I0001.A001 , VSAM
PAGE: # 00000002 --------------------------------------------------------------------------------
DATA PAGE: PGCOMB='10'X PGLOGRBA='0000758C9455'X PGNUM='00000002'X PGFLAGS='00'X PGFREE=4041
PGFREE='0FC9'X PGFREEP=51 PGFREEP='0033'X PGHOLE1='0000'X PGMAXID='01'X PGNANCH=1
PGTAIL: PGIDFREE='00'X PGEND='N'
ID-MAP FOLLOWS:
01 0014
RECORD: XOFFSET='0014'X PGSFLAGS='02'X PGSLTH=31 PGSLTH='001F'X PGSOBD='0003'X PGSBID='01'X
80000001 00004101 41024100 20002000 20002000 20002000 20 ......A.A.A. . . . . . .
DSN1994I DSN1PRNT COMPLETED SUCCESSFULLY, 00000001 PAGES PROCESSED