A instrução INSPECT examina caracteres ou grupos de caracteres em um item de dados e faz o seguinte:
- Conta as ocorrências de um caractere específico (alfanumérico, DBCS ou nacional) em um item de dados (formatos 1 e 3).
- Conta as ocorrências de caracteres específicos e preenche todas ou partes de um item de dados com caracteres especificados, como espaços ou zeros (formatos 2 e 3).
- Converte todas as ocorrências de caracteres específicos em um item de dados para caracteres de substituição fornecidos pelo usuário (formato 4).
Formato 1
>> - INSPECT-- identificador-1 --TALLYING ------------------------------> .------ -------------------------------------------------- ----------------------------. | .------------------------------------------------- ------------. | | | .------------------. | | VVV | | | > ---- Identificador-2 --para ---- + - PERSONAGENS ---- + -------------- + - + ---------- -------------- + - + - + -> < | -benzóico. Frase 1 | - '| | .----------------------------------------. | | | .------------------. | | | VV | | | '- + - + ALL ----- ---- + - identificador-3 - + ---- + -------------- + - + - + -' '- LEADING- '' - literal-1 ---- '' - | frase 1 | - ' frase 1: | - + - ANTES - + - + --------- + - + - identificador-4 - + ------------ -------- | '-AFTER--' '-INITIAL-' '- Literal-2 ----'
Formato 2
>> - INSPECT-- identificador-1 --REPLACING -----------------------------> .------- -------------------------------------------------- --------------------------. | .------------------. | VV | | > ---- + - Personagens por - + - identificador-5 - + ---- + -------------- + - + ---------- --------------- + - + -> < | '- Literal-3 ----' '- | Frase 1 | - '| | .------------------------------------------------- -------------. | | | .------------------. | | | VV | | | '- + - ALL ----- + ---- + - identificador-3 - + - POR - + - identificador-5 - + ---- + ----------- --- + - + - + - ' + + -LEADING-' - literal-1 ---- '' - literal-3 ---- '' - | frase 1 | - ' ' -primeiro --- ' frase 1: | - + - ANTES - + - + --------- + - + - identificador-4 - + ----- --------------- | '-AFTER--' '-INITIAL-' '- Literal-2 ----'
Formato 3
>> - INSPECT-- identificador-1 --TALLYING ------------------------------> .------ -------------------------------------------------- ----------------------------. | .------------------------------------------------- ------------. | | | .------------------. | | VVV | | | > ---- Identificador-2 --para ---- + - PERSONAGENS ---- + -------------- + - + ---------- -------------- + - + - + -> | -benzóico. Frase 1 | - '| | .----------------------------------------. | | | .------------------. | | | VV | | | '- + - + ALL ----- ---- + - identificador-3 - + ---- + -------------- + - + - + -' '- LEADING- '' - literal-1 ---- '' - | frase 1 | - " > - SUBSTITUIÇÃO ----------------------------------------- -----------> .------------------------------------- ----------------------------------------------. | .------------------. | VV | | > ---- + - Personagens por - + - identificador-5 - + ---- + -------------- + - + ---------- --------------- + - + -> < | '- Literal-3 ----' '- | Frase 1 | - '| | .------------------------------------------------- -------------. | | | .------------------. | | | VV | | | '- + - ALL ----- + ---- + - identificador-3 - + - POR - + - identificador-5 - + ---- + ----------- --- + - + - + - ' + + -LEADING-' - literal-1 ---- '' - literal-3 ---- '' - | frase 1 | - ' ' -primeiro --- ' frase 1: | - + - ANTES - + - + --------- + - + - identificador-4 - + ----- --------------- | '-AFTER--' '-INITIAL-' '- Literal-2 ----'
Formato 4
>> - INSPECT-- identificador-1 --CONVERTING - + - identificador-6 - + - TO ------> '- literal-4 ---- " > - + - identificador-7 - + ---------------------------------------------> '- literal -5 ---- ' .------------------------------------------ -. V | > ---- + - ANTES - + - + --------- + - + - identificador-4 - + - + ---------------> < '-AFTER--' '-INITIAL-' '- literal-2 ----'
identifier-1
É o produto inspecionado e pode ser qualquer um dos seguintes:
- Um item de grupo alfanumérico ou item de grupo nacional
- Um item de dados elementares descrito explicitamente ou implicitamente com uso DISPLAY, DISPLAY-1 ou NATIONAL. O item pode ter qualquer categoria que seja válida para o uso selecionado.
3-identificador , identificador-4 , identificador-5 , identificador-6 , identificador 7-
Deve referenciar um item de dados elementar descrito explicitamente ou implicitamente com o uso DISPLAY, DISPLAY-1 ou NATIONAL.
literal-1 , literal-2 , literal-3 , literal-4
Deve ser de categoria alfanumérica, DBCS ou nacional.
Quando identificador-1 é de uso NACIONAL, literais devem ser de categoria nacional.
Quando identificador-1 é de uso DISPLAY-1, literais devem ser de categoria DBCS.
Quando identificador-1 é de uso DISPLAY, literais devem ser de categoria alfanumérico.
Quando identificador-1 é de uso DISPLAY-1 (DBCS) literais pode ser o espaço constante figurativa.
Quando identificador-1 é de exibir o uso ou nacional, literais pode ser qualquer constante figurativa que não comece com a palavra ALL, conforme especificado no constantes figurativas . A constante figurativa é tratado como um alfanumérico de um carácter literal quando identificador-1 é de uso DISPLAY, e como um caráter nacional literal quando identificador-1 é de uso NACIONAL.
Todos os identificadores (exceto identificador-2 ) deve ter o mesmo uso como identificador-1 . Todos os literais deve ter categoria alfanumérico, DBCS, ou quando nacional identificador-1 tem exibição de uso, DISPLAY-1, ou nacional, respectivamente.
Nenhum dos identificadores em uma instrução INSPECT pode ser campos de data com janelas.
TALLYING (formatos 1 e 3)
Esta frase conta as ocorrências de um caractere específico ou caractere especial em um item de dados.
Quando identificador-1 é um item de dados DBCS, caracteres DBCS são contados; quando identificador-1 é um item de dados de uso nacional, caracteres nacionais (unidades que codifica) são contadas; Caso contrário, são contados caracteres alfanuméricos (bytes).
Identifier-2
É o campo de contagem , e deve ser um item inteiro elementar definido sem o símbolo P em sua PICTURE character-string.
identifier-2 não pode ser de categoria de ponto flutuante externo.
Você deve inicializar identificador-2 antes da execução do INSPECT declaração começa.
Nota: O campo de contagem pode ser um item de dados inteiros definido com o uso NACIONAL.
identifier-3 ou literal-1
É o campo de contagem (o item cujo ocorrências serão computados).
CHARACTERS
Quando CHARACTER é especificado e nem BEFORE nem AFTER é especificado, o campo de contagem ( identificador-2 ) é aumentada de 1 para cada personagem (incluindo o caractere de espaço) no item inspecionado ( identificador-1 ). Assim, a execução de uma instrução INSPECT com TALLYING aumenta o valor no campo COUNT pelo número de posições de caracteres no item inspecionado.
ALL
Quando tudo estiver especificado e nem BEFORE nem AFTER é especificado, o campo COUNT ( identificador-2 ) é aumentada de 1 para cada ocorrência não sobrepostas comparando contagem ( identificador-3 ou literal-1 ) no item inspecionado ( identifier- 1 ), começando na posição do caractere mais à esquerda e continuando até o mais à direita.
LEADING
Quando LEADING é especificado e nem BEFORE nem AFTER é especificado, o campo COUNT ( identificador-2 ) é aumentada de 1 para cada ocorrência não sobrepostas contígua do registro no item inspecionado ( identificador-1 ), desde que o mais à esquerda, tais A ocorrência ocorre no ponto em que a comparação teve início no primeiro ciclo de comparação para o qual o comparante de apuramento é elegível para participar.
FIRST (formato 3 apenas)
Quando FIRST é especificado e nem BEFORE nem AFTER é especificado, o campo de substituição substitui a ocorrência mais à esquerda do campo no item inspecionado ( identificador-1 ).
REPLACING (formatos 2 e 3)
Esse comando preenche todos ou partes de um item de dados com caracteres especificados, como espaços ou zeros.
identifier-3 ou literal-1
É o campo (que identifica os caracteres a ser substituído).
identificador-5 ou literal-3
É o campo de substituição (o item que substitui o campo).
O campo de assunto eo campo de substituição devem ter o mesmo comprimento.
Quando TALLYING e REPLACING são especificadas (formato 3), a instrução INSPECT é executada como se uma instrução INSPECT TALLYING (formato 1) fosse especificada, seguido imediatamente por uma instrução INSPECT REPLACING (formato 2).
Regras de substituição
São aplicáveis as seguintes regras de substituição:
- Quando o campo de assunto é uma constante figurativa, o campo de substituição de um caractere substitui cada caractere no item inspecionado que é equivalente à constante figurativa.
- Quando o campo de substituição é uma constante figurativa, o campo de substituição substitui cada ocorrência de sobreposição do campo de assunto no item inspecionado.
- Quando os campos de assunto e de substituição são caracteres, a cadeia de caracteres especificada no campo de substituição substitui cada ocorrência de sobreposição do campo de assunto no item inspecionado.
- Após a substituição ocorreu em uma determinada posição de caractere no item inspecionado, nenhuma substituição adicional para essa posição de caractere é feita nesta execução da instrução INSPECT.
BEFORE e AFTER (todos os formatos)
Restringe o conjunto de itens que estão sendo contados ou substituídos.
Não mais de um BEFORE e AFTER podem ser especificadas para qualquer comando ALL, LEADING, CHARACTERS, FIRST ou CONVERTING.
identifier-4 ou literal-2
É o delimitador .
Delimitadores não são contados ou substituídos.
INITIAL
A primeira ocorrência de um item especificado.
As frases BEFORE e AFTER mudam a maneira como a contagem ea substituição são feitas:
- Quando BEFORE for especificado, contando ou substituição do item inspecionado ( identificador-1 começa) na posição do caractere mais à esquerda e continua até a primeira ocorrência do delimitador é encontrado. Se nenhum delimitador estiver presente no item inspecionado, a contagem ou substituição continua para a posição do caráter mais à direita.
- Quando, AFTER é especificado, contando ou substituição do item inspecionado ( identificador-1 ) começa com a primeira posição do caractere para a direita do delimitador e continua em direção à posição do caractere mais à direita no item inspecionado. Se nenhum delimitador estiver presente no item inspecionado, nenhuma contagem ou substituição ocorrerá.
CONVERTING frase (formato 4)
Esta frase converte todas as ocorrências de um caractere ou seqüência de caracteres específicos em um item de dados ( identificador-1 ) para caracteres de substituição fornecidos pelo usuário.
identificador-6 ou literal-4
Especifica a cadeia de caracteres a ser substituída .
O mesmo personagem não deve aparecer mais de uma vez em qualquer literal-4 ou identificador-6 .
identifier-7 ou literal-5
Especifica a substituição de cadeia de caracteres.
A cadeia de caracteres substituindo ( identificador-7 ou literal-5 ) deve ser o mesmo tamanho que a cadeia de caracteres substituída ( identificador-6 ou literal-4 ).
Um formato-4 INSPECT declaração é interpretado e executado como se um formato-2 INSPECT declaração tinha sido escrito com uma série de todas as frases (um para cada personagem do literal-4 ), especificando o mesmo identificador-1 . O efeito é como se cada caractere único de literal-4 foram referenciados como literal-1 , eo caráter único correspondente de literal-5 referenciado como literal-3 . A correspondência entre os personagens de literal-4 e os personagens de literal-5 é por posição ordinal dentro do item de dados.
Se identificador-4 , identificador-6 , ou identificador-7 ocupa a mesma área de armazenamento como identificador-1 , o resultado da execução desta instrução é indefinido, mesmo se eles são definidos pela mesma entrada de descrição de dados.
DATA FLOW
Exceto quando BEFORE ou AFTER é especificado, inspeção começa na posição mais à esquerda personagem do item inspecionado ( identificador-1 ) e prossegue caractere por caractere para a posição mais à direita.
As comparações das seguintes frases são comparadas na ordem da esquerda para a direita na qual elas são especificadas na instrução INSPECT:
- TALLYING (literal-1 ou identificador-3, ...)
- REPLACING (literal-3 ou identificador-5, ...)
Se qualquer identificador é subscrito ou referência modificada, ou é um identificador de função, o subscrito, modificador de referência ou função é avaliado apenas uma vez como a primeira operação na execução da instrução INSPECT.
Ciclo de comparação
O ciclo de comparação consiste nas seguintes ações:
- A primeira comparação é comparada com um número igual de posições de carácter contíguas mais à esquerda no item inspeccionado. O comparand corresponde aos caracteres inspecionados somente se ambos forem iguais, character-for-character.
Se a frase CHARACTERS for especificada, uma comparação de um caractere implícita é usada. O caractere implícito é sempre considerado coincidir com o caractere inspecionado no item inspecionado.
- Se não houver correspondência para a primeira comparação e houver mais comparações, a comparação é repetida para cada comparação comparativa até que seja encontrada uma correspondência ou todas as comparações tenham sido aplicadas.
- Dependendo se uma correspondência é encontrada, essas ações são tomadas:
- Se for encontrada uma correspondência, o registro ou substituição ocorre como descrito nas descrições de frase TALLYING e REPLACING.
- Se houver mais posições de caracteres no item inspecionado, a primeira posição de caractere após o caractere correspondente mais à direita será considerada na posição de caracteres mais à esquerda. O processo descrito nas acções 1 e 2 é então repetido.
- Se nenhuma correspondência for encontrada e houver mais posições de caracteres no item inspecionado, a primeira posição de caractere que segue o caractere inspecionado mais à esquerda é considerada agora como sendo a posição de caracteres mais à esquerda. O processo descrito nas acções 1 e 2 é então repetido.
- As acções de 1 a 3 são repetidas até que a posição do carácter mais à direita no item inspeccionado tenha sido correspondida ou tenha sido considerada como estando na posição de carácter mais à esquerda.
Quando a frase antes ou depois for especificado, o ciclo de comparação é modificada, conforme descrito em antes e depois frases (todos os formatos) .