PUTDDREC: Como Gravar uma String de Caracteres como Registro em um Arquivo Sequencial

Como:

A função PUTDDREC grava uma string de caracteres como registro em um arquivo sequencial. O arquivo deve ser identificado como um comando FILEDEF (DYNAM no z/OS). Se o arquivo estiver definido como um arquivo existente (com a opção APPEND), o novo registro será anexado. Se o arquivo estiver definido como NEW e já existir, o novo registro substitui o arquivo existente.

Para obter informações sobre o comando FILEDEF, consulte o manual Como Desenvolver Aplicativos de Relatório .

PUTDDREC abre o arquivo caso ainda não esteja aberto. Cada chamada pelo PUTDDREC pode utilizar o mesmo arquivo ou um novo. Todos os arquivos abertos pelo PUTDDREC permanecem abertos até o fim de uma solicitação ou de sessão. No fim da solicitação ou de sessão, todos os arquivos abertos por PUTDDREC são fechados automaticamente.

Se PUTDDREC for chamado no comando -SET do Dialogue Manager, os arquivos abertos por PUTDDREC não serão fechados automaticamente até o fim de uma solicitação ou de sessão. Neste caso, você pode fechar os arquivos e liberar a memória utilizada para armazenar informações sobre o arquivo aberto chamando a função CLSDDREC.


Topo da página

x
Sintaxe: Como Escrever uma string de caracteres como registro em um arquivo sequencial
PUTDDREC(ddname, dd_len, record_string, record_len, output) 

onde:

ddname

Alfanumérico

É o nome lógico atribuído ao arquivo sequencial em um comando FILEDEF .

dd_len

Numérico

É o número de caracteres no nome lógico.

record_string

Alfanumérico

É a string de caracteres a ser adicionada como novo registro no arquivo sequencial.

record_len

Numérico

É o número de caracteres a adicionar como novo registro.

Não pode ser maior do que o número de caracteres em record_string. Para gravar record_string em sua totalidade no arquivo, record_len deve ser igual ao número de caracteres em record_string e não deve exceder o comprimento do registro declarado no comando FILEDEF . Se record_len for menor que o comprimento declarado, o arquivo resultante poderá conter caracteres extra ao final de cada registro. Se record_string não for mais longo que o comprimento declarado, record_string poderá ser truncado no resultado final.

saída

Inteiro

É o código de retorno, que pode possuir um dos seguintes valores:

0 - O registro é adicionado.
-1 - Não é possível encontrar a cláusula FILEDEF.
-2 - Erro durante a abertura do arquivo.
-3 - Erro ao adicionar o registro ao arquivo.



Exemplo: Como Chamar PUTDDREC em uma Solicitação TABLE

O exemplo a seguir define um novo arquivo com nome lógico PUTDD1. A solicitação TABLE, em seguida, chama PUTDDREC para cada funcionário na fonte de dados EMPLOYEE e grava um registro no arquivo composto do sobrenome, nome, ID, código de posição atual e salário atual (convertido em alfanumérico pela função EDIT) do funcionário. O código de retorno de zero (em OUT1) indica que as chamadas para PUTDDREC foram feitas com sucesso:

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

A saída é:

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

Após a execução desta solicitação, o arquivo sequencial contém os seguintes 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


Exemplo: Como Chamar PUTDDREC e CLSDDREC nos Comandos -SET do Dialogue Manager

O exemplo a seguir define um novo arquivo com nome lógico PUTDD1. O primeiro comando -SET cria um registro para se adicionar a este arquivo. O segundo comando -SET chama PUTDDREC para adicionar o registro. O último comando -SET chama CLSDDREC para fechar o arquivo. Códigos de retorno são exibidos para garantir o sucesso das operações:

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

A saída é:

DATA = SMITHMARYA0727000
PUT RESULT = 0
CLOSE RESULT = 0

Após a execução deste procedimento, o arquivo sequencial contém o seguinte registro:

SMITHMARYA0727000

Information Builders