PUTDDREC: Cómo escribir una cadena de caracteres como registro en un archivo secuencial

Cómo:

La función PUTDDREC escribe una cadena de caracteres como registro en un archivo secuencial. El archivo debe estar identificado con un comando FILEDEF (DYNAM, en z/OS). Si el archivo está definido como existente (con la opción APPEND), el registro nuevo queda anexado. Si el archivo está definido como NEW y ya existe, el registro nuevo sobrescribe el archivo existente.

Para más información sobre el comando FILEDEF, consulte el manual Cómo desarrollar aplicaciones de informes .

Si el archivo no está abierto, PUTDDREC lo abre. Puede usar el mismo archivo, o uno nuevo, con cada llamada a PUTDDREC. Todos los archivos abiertos por PUTDDREC permanecen en este estado hasta que termine la solicitud o conexión. Cuando termine la solicitud o conexión, todos los archivos abiertos por PUTDDREC se cerrarán automáticamente.

Para más información sobre el cierre de los archivos abiertos por PUTDDREC, para liberar la memoria utilizada, consulte CLSDDREC: Cómo cerrar todos los archivos abiertos por la función PUTDDREC.

Si se llama PUTDDREC desde un comando -SET, en Dialogue Manager, los archivos abiertos por PUTDDREC no se cerrarán automáticamente hasta que finalice una solicitud o conexión. En este caso, puede cerrar los archivos y liberar la memoria usada para almacenar la información de un archivo abierto, llamando a una función CLSDDREC.


Principio de página

x
Sintaxis: Cómo Escribir una cadena de caracteres como registro en un archivo secuencial
PUTDDREC(ddname, dd_len, record_string, record_len, output) 

donde:

ddname

Alfanumérico

Es el nombre lógico asignado al archivo secuencial, en un comando FILEDEF.

dd_len

Numérico

Es el número de caracteres del nombre lógico.

record_string

Alfanumérico

Es la cadena de caracteres que se va a añadir como registro nuevo, en el archivo secuencial.

record_len

Numérico

Es el número de caracteres que se va a añadir como registro nuevo.

No puede ser superior al número de caracteres en record_string. Para escribir la totalidad de record_string en el archivo, record_len debe ser igual al número de caracteres en record_string y no debe superar la longitud del registro declarada en el comando FILEDEF. Si record_len es inferior a la longitud declarada, puede que el archivo resultante contenga caracteres superfluos al final de cada registro. Si record_string supera la longitud declarada, record_string puede quedar truncado en el archivo resultante.

output

Número entero

Es el código de devolución, que puede tener uno de los siguientes valores:

 0 - Se añade el registro.
-1 - No se ha encontrado la declaración de FILEDEF.
-2 - Error al abrir el archivo.
-3 - Error al añadir el registro al archivo.



Ejemplo: Cómo llamar a PUTDDREC en una solicitud de TABLE

El siguiente ejemple define un archivo nuevo cuyo nombre lógico es PUTDD1. A continuación, la solicitud de TABLE llama a PUTDDREC por cada empleado en el origen de datos EMPLOYEE, y escribe un registro compuesto por su apellido, nombre, id., código de puesto y salario actuales (convertidos en caracteres alfanuméricos por la función EDIT), en el archivo. El código de retorno cero (en OUT1) indica que las llamadas a PUTDDREC se han realizado correctamente:

FILEDEF PUTDD1 DISK putdd1.datTABLE FILE EMPLOYEE
PRINT EMP_ID CURR_JOBCODE AS 'JOB' CURR_SAL
COMPUTE SALA/A12 = EDIT(CURR_SAL); NOPRINT
COMPUTE EMP1/A50= LAST_NAME|FIRST_NAME|EMP_ID|CURR_JOBCODE|SALA;
NOPRINT
COMPUTE OUT1/I1 = PUTDDREC('PUTDD1',6, EMP1, 50, OUT1);
BY LAST_NAME BY FIRST_NAME
END

La salida es:

LAST_NAME        FIRST_NAME  EMP_ID     JOB         CURR_SAL  OUT1
---------        ----------  ---------  ---         --------  ----
BANNING          JOHN        119329144  A17       $29,700.00     0
BLACKWOOD        ROSEMARIE   326179357  B04       $21,780.00     0
CROSS            BARBARA     818692173  A17       $27,062.00     0
GREENSPAN        MARY        543729165  A07        $9,000.00     0
IRVING           JOAN        123764317  A15       $26,862.00     0
JONES            DIANE       117593129  B03       $18,480.00     0
MCCOY            JOHN        219984371  B02       $18,480.00     0
MCKNIGHT         ROGER       451123478  B02       $16,100.00     0
ROMANS           ANTHONY     126724188  B04       $21,120.00     0
SMITH            MARY        112847612  B14       $13,200.00     0
                 RICHARD     119265415  A01        $9,500.00     0
STEVENS          ALFRED      071382660  A07       $11,000.00     0

Después de ejecutar esta solicitud, el archivo secuencial presenta los siguientes registros:

BANNING        JOHN      119329144A17000000029700
BLACKWOOD      ROSEMARIE 326179357B04000000021780
CROSS          BARBARA   818692173A17000000027062
GREENSPAN      MARY      543729165A07000000009000
IRVING         JOAN      123764317A15000000026862
JONES          DIANE     117593129B03000000018480
MCCOY          JOHN      219984371B02000000018480
MCKNIGHT       ROGER     451123478B02000000016100
ROMANS         ANTHONY   126724188B04000000021120
SMITH          MARY      112847612B14000000013200
SMITH          RICHARD   119265415A01000000009500
STEVENS        ALFRED    071382660A07000000011000


Ejemplo: Cómo llamar a PUTDDREC y CLSDDREC en Dialogue Manager - comandos SET

El siguiente ejemple define un archivo nuevo cuyo nombre lógico es PUTDD1. El primer comando -SET crea un registro que se va a añadir al archivo. El segundo comando -SET llama a PUTDDREC para que añada el registro. El último comando -SET llama a CLSDDREC para que cierre el archivo. Los códigos de devolución aparecen mostrados para verificar que las operaciones han sido realizadas correctamente:

FILEDEF PUTDD1 DISK putdd1.dat -SET &EMP1 = 'SMITH'|'MARY'|'A07'|'27000';
-TYPE DATA = &EMP1
-SET &OUT1 = PUTDDREC('PUTDD1',6, &EMP1, 17, 'I1');
-TYPE PUT RESULT = &OUT1
-SET &OUT1 = CLSDDREC('I1');
-TYPE CLOSE RESULT = &OUT1

La salida es:

DATA = SMITHMARYA0727000
PUT RESULT = 0
CLOSE RESULT = 0

Después de ejecutar este procedimiento, el archivo secuencial presenta el siguiente registro:

SMITHMARYA0727000

WebFOCUS