Enterprise COBOL for z/OS, V4.2, Language Reference
As seções a seguir descrevem restrições ao uso de campos de data nesses contextos:
- Cláusulas DATE FORMAT (FORMATO DA DATA) combinadas com outras cláusulas
- Agrupar itens que consistem apenas em um campo de data
- Elementos de idioma que tratam campos de data como sem datas
- Elementos de idioma que não aceitam campos de data como argumentos
Para restrições sobre o uso de campos de data em outros contextos, consulte:
Combinando a cláusula DATE FORMAT com outras cláusulas
As frases a seguir são as únicas da cláusula USAGE que podem ser combinadas com a cláusula DATA FORMAT:
- BINARY
- COMPUTATIONAL1
- COMPUTATIONAL-3
- COMPUTATIONAL-4
- DISPLAY
- PACKED-DECIMAL
1USAGE COMPUTATIONAL não pode ser combinado com a cláusula DATE FORMAT se a opção do compilador TRUNC (BIN) estiver em vigor.
A cadeia de caracteres PICTURE deve especificar o mesmo número de caracteres ou dígitos que a cláusula DATE FORMAT.
Para campos de data alfanumérica, os únicos símbolos de sequência de caracteres PICTURE permitidos são A, 9 e X, com pelo menos um X.
Para campos de data numéricos, os únicos símbolos de sequência de caracteres PICTURE permitidos são 9 e S.
As seguintes cláusulas não são permitidas para um item de dados definido com DATE FORMAT:
- BLANK WHEN ZERO
- JUSTIFIED
- SEPARATE CHARACTER da cláusula SIGN
A cláusula EXTERNAL não é permitida para um campo de data em janela ou um item de grupo que contenha um item subordinado de campo de data em janela.
Algumas restrições se aplicam ao combinar as seguintes cláusulas com DATE FORMAT:
Agrupe itens que são campos de data
Se um item de grupo for definido com uma cláusula DATE FORMAT, as seguintes restrições serão aplicadas:
- Os itens elementares no grupo devem ser USAGE DISPLAY.
- O comprimento do item do grupo deve ter o mesmo número de caracteres que o padrão de data na cláusula DATE FORMAT.
- Se o grupo consistir apenas em um campo de data com USAGE DISPLAY e o grupo e o único item subordinado tiverem cláusulas DATE FORMAT, as cláusulas DATE FORMAT
deverão ser idênticas.
- Se o item de grupo contiver itens subordinados que subdividem o grupo, as seguintes restrições serão aplicadas:
- Se um item subordinado nomeado (não FILLER) consistir exatamente na parte do ano do campo de data do item do grupo e tiver uma cláusula DATA FORMAT, a
cláusula DATE FORMAT deverá ser YY ou YYYY com o mesmo número de caracteres do ano que o item do grupo.
- Se o item de grupo for uma data gregoriana com uma cláusula DATE FORMAT de YYXXXX, YYYYXXXX, XXXXYY ou XXXXYYYY, e um item de dados de data subordinado nomeado
consistir na parte do ano e mês da data gregoriana, sua cláusula DATE FORMAT deverá ser YYXX , YYYYXX, XXYY ou XXYYYY, respectivamente (ou, para um formato de
data de grupo de YYYYXXXX, um formato de data subordinada de YYXX, conforme descrito abaixo).
- Um campo de data em janela pode estar subordinado a um item do grupo de campos de data expandida se o item subordinado iniciar dois caracteres após o item do
grupo, nenhuma data estiver no formato do último ano e o formato da data do item subordinado não tiver Xs ou tiver o mesmo número de Xs após os Ys do item do
grupo ou é YYXX no formato de data do grupo YYYYXXXX.
- Os únicos itens subordinados que podem ter uma cláusula DATE FORMAT são aqueles que definem a parte do ano do item do grupo, a parte da janela de um item do
grupo de campos de data expandida ou a parte do ano e mês de um item do grupo de datas gregoriano, conforme discutido em as restrições acima.
Por exemplo, o seguinte define um item de grupo válido:
01 YYMMDD DATE FORMAT YYXXXX.
05 YYMM DATE FORMAT YYXX.
10 YY DATE FORMAT YY PICTURE 99.
10 PICTURE 99.
05 DD PICTURE 99.
Elementos de idioma que tratam campos de data como sem datas
Se os campos de data forem usados nos seguintes elementos de idioma, eles serão tratados como sem datas.
Ou seja, o DATE FORMAT é ignorado e o conteúdo do item de dados de data é usado sem sofrer expansão automática.
- No parágrafo ENVIRONMENT DIVISION FILE-CONTROL:
- SELECT ... ASSIGN USING data-name
- SELECT ... PASSWORD IS data-name
- SELECT ... FILE STATUS IS data-name
- Na DATA DIVISION:
- LABEL RECORD IS data-name
- LABEL RECORDS ARE data-name
- LINAGE IS data-name FOOTING data-name TOP data-name BOTTOM data-name
- Em condições de classe
- Em condições de sinal
- Nas instruções DISPLAY
Elementos de idioma que não aceitam campos de data em janela como argumentos
Os campos de data com janelas não podem ser usados como:
- Um data-name nos seguintes formatos do parágrafo ENVIRONMENT DIVISION FILE-CONTROL:
- SELECT ... RECORD KEY IS
- SELECT ... ALTERNATE RECORD KEY IS
- SELECT ... RELATIVE KEY IS
- Um data-name na cláusula RECORD IS VARYING DEPENDING ON de uma data division file description (FD) or sort description (SD) entry
- O objeto de uma cláusula OCCURS DEPENDING ON de uma data division data definition entry
- A chave em uma frase ASCENDING KEY ou DESCENDING KEY de uma cláusula OCCURS de uma data division data definition entry
- Qualquer nome de dados ou identificador nas seguintes instruções:
- CANCEL
- GO TO ... DEPENDING ON
- INSPECT
- SET
- SORT
- STRING
- UNSTRING
- Na instrução CALL, como o identificador que contém o nome do programa
- Na instrução INVOKE, como o identificador que especifica o objeto no qual o método é chamado ou o identificador que contém o nome do método
- Identificadores nas frases TIMES e VARYING da instrução PERFORM (os campos de data em janela são permitidos nas condições PERFORM)
- Um identificador na frase VARYING de uma instrução SEARCH serial (formato 1) ou qualquer identificador em uma instrução SEARCH binária (formato 2) (campos de
data em janelas são permitidos nas condições SEARCH)
- Um identificador na frase ADVANCING da instrução WRITE
- Argumentos para funções intrínsecas, exceto a função intrínseca UNDATE
Os campos de data com janelas podem ser usados como chaves ascendentes ou descendentes nas instruções MERGE e SORT, com algumas restrições.
Para detalhes, consulte as instruções MERGE e SORT.
Elementos de idioma que não aceitam campos de data como argumentos
Não é possível usar campos de data em janela nem campos de data expandida:
- Na instrução DIVIDE, exceto como um identificador na cláusula GIVING ou REMAINDER
- Na instrução MULTIPLY, exceto como um identificador na cláusula GIVING
(Os campos de data não podem ser usados como operandos em divisão ou multiplicação.)
© Copyright IBM Corp.