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.

  1. 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=SHR

    La 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.

  2. 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=SHR

    El 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            
Información relacionada: