Outras formas de selecionar o conjunto de registros a processar

Seleção por intervalo
from= <n> to=<n>

mx cds from=24 to=50

Esta linha de comandos exibe na tela a partir do registro 24 até o registro 50 inclusive. Se não for indicado from será assumido, como início, o primeiro registro da base de dados; se não for indicado to o processamento será até o final da base de dados, ou até que o operador saia, pressionando x.
Dica:
Os parâmetros devem ser escritos estritamente em minúsculas, com o sinal de igual (=) sem
deixar espaços em branco.
Os exemplos seguintes NÃO são corretos:

mx cds FROM=10 O parâmetro deve ser em minúsculas
mx cds from= 10 Há um espaço em branco entre o = e
o 10
mx cds from 10 Falta o sinal =

Drive:
Se a sintaxe não estiver correta, há duas conseqüências possíveis: o programa não será executado, apresentando uma mensagem de cancelamento, advertindo sobre tipo de erro, ou interpretará o parâmetro mal escrito como uma expressão de busca.
• A expressão do exemplo (a) gerará o resultado:

FROM=10
Set #000001
Hits=0
->

Isto significa que buscou a expressão FROM=10 na base de dados.
• A expressão do exemplo (b) gerará o resultado:

FROM
Set #000001
Hits=0
Expression syntax error 5: '='
->

O MX interpreta que há um erro na expressão de busca devido ao sinal =
• A expressão do exemplo (c) gerará o resultado:

FROM
Set #00001
Hits=0
10
Set #000002
Hits=0
->

Isto implica que buscou as palavras FROM e 10 e não encontrou nenhum registro. Com esta instrução serão visualizados somente os números de MFN dos registros 24 a 50.

mx cds from=24 to=50 pft=mfn/

Seleção a cada n registros
loop=<n>
O parâmetro loop=n processa um registro e pula n registros, processa o registro
n+1, pula outros n e assim sucessivamente. Exemplo:

mx cds loop=10

São recuperados os registros 1, 11, 21, etc.
Selecionar n registros
count=<n>
O parâmetro count=n seleciona exatamente n registros a partir de um início dado.
Se não for indicado o registro de início, começa a partir do primeiro registro.

Exemplo Saída
mx cds from=24 to=50 loop=5 pft=mfn/ now 000024
000029
000034
000039
000044
000049
mx cds from=24 to=50 count=3 loop=5 pft=mfn/ now 000024
000029
000034
mx cds from=24 to=50 count=9 loop=5 pft=mfn/ now 000024
000029
000034
000039
000049

Dica:
Quando na mesma linha se encontram parâmetros como count, to, etc., o processo termina quando completa o primeiro deles.
Parâmetros que modificam registros
proc=[<proc_fmt>][@<proc_fmt_file>]

<proc_fmt> y <proc_fmt_file> sintaxe
D{<tag>[/<occ>]|*}
A<tag><delim><data><delim>
H<tag> <length> <data>
<TAG[ <stripmarklen>[ <minlen>]]><data></TAG>
S[<tag>]
R<mf>,<mfn>
G<gizmo_mf>[,<taglist>]
Gsplit[/clean]=<tag>[={<char>|words|letters|numbers|trigrams}]
Gload[/<tag>][/nonl][=<file>]
Gmark[/<tag>]{/<elem>|/keys|/decs|/<mf>,<otag>[,<ctag>]}=<if>
Gmarx[/<tag>]/<elem>[@<att>="x"] =<tag>[:&[<att>]|/c[=224]|/i]
Gdump[/<tag>][/nonl][/xml][=<file>]
=<mfn>
X[append=]<mf>

O parâmetro proc permite especificar, através de um formato, modificações a serem realizados nos campos do registro fonte. Possibilita apagar, incluir e substituir conteúdo dos campos. As operações a serem realizadas são definidas como instruções de formato, que pode ser submetido diretamente na linha de comandos ou tomado a partir de um arquivo externo. Ainda é importante destacar que as modificações dos registros não são realizadas na base de origem (base de onde provêm os dados), mas na base de destino. No caso de não existir a especificação da base de destino, as alterações poderão ser vistas na tela, mas se perderão uma vez terminada a execução. Para que as alterações sejam realizadas na mesma base que foi utilizada como entrada, esta deve ser especificada como base de destino. Exemplos:

mx cds from=1 to=10 now proc='d70'

Dica:
A especificação proc=’d70′ apaga todas as ocorrências do campo 70.
As alterações serão vista na tela, mas não são realizadas realmente, porque não foi
especificada a base de destino. Para que as alterações se reflitam no mesmo
arquivo mestre que se especificou como entrada, é necessário que seja indicado
através do parâmetro copy:

mx cds from=1 to=10 proc='d70' copy=cds now

Outra possibilidade é especificar um arquivo em vez de escrever o formato na linha
de comandos:

mx cds from=1 to=10 now proc=@modifica

Realiza as modificações atribuídas em um arquivo que contem o seguinte formato: ‘d70’
Quantidade máxima de parâmetros aceitos

in= 1024
arquivos in= (recursivos) 16
proc= 1024
join= 128
gizmo= 16
linhas no arquivo stw 799

É possível especificar até 1024 proc= parâmetros, incluindo fst, read, write, I/F update proc em uma linha de comandos do MX. Cada proc sucessivo atuará sobre o registro na sua situação atual, pelo que se um proc (ou qualquer procedimento anterior na execução) modifica o registro original de entrada, o próximo proc atuará sobre os dados existentes neste momento. São aceitas todas as instruções padrão de formato do CDS/ISIS, incluindo as condicionais do tipo IF, mas não são aceitas as chamadas a programas em IsisPascal (format exits). Aceita ainda as variáveis e0…e9, s0 ..s9 e o comando while. É possível incluir proc dentro de proc (recursivo) sem limites. A linguagem de formatação CDS/ISIS também aceita a instrução proc( ). Para detalhes, veja o Manual de linguagem de formatação CDS/ISIS. Na tabela seguinte são descritos os comandos de uso mais freqüente que o proc pode executar, os outros são explicados em detalhe de forma individual (MX aceita todos os comandos da função fldupdat( ) da Interface CISIS):

Comando Explicação Exemplo
D. Apaga lógicamente o registro. proc=’d.’
D* Apaga todos os campos do
Registro.
proc=’d*’
Dtt Apaga todas as ocorrências do
campo tt.
proc=’d26′
Dtt/occ Apaga a ocorrência occ do campo
tt.
proc=’d26/3′
Att#str# Inclui a cadeia de caracteres str
como uma nova ocorrência do
campo tt.
proc=’A999#cds#’
Htt n str_n Inclui a cadeia de caracteres str_n
de n bytes de tamanho como uma
nova ocorrência do campo tt.
proc=’H99 8 CDS/ISIS’
=<mfn> Substitui o número de registro
(mfn) por n .
Proc=’=10′
S<tag> Ordena as entradas ao diretório do
registro por tag.
proc=’s’
Proc=’s70′

Dica: Em um mesmo parâmetro proc, todos os comandos de apagar devem preceder ao dos comandos de incluir. Em um mesmo parâmetro proc não se deve utilizar dois ou mais comandos Dtt/occ para o mesmo campo tt. Em um mesmo parâmetro proc não se deve utilizar o comando =n, nem o comando S junto com outros comandos.
 
Os comandos listados na tabela anterior podem ser escritos indistintamente em
maiúsculas ou minúsculas. Basicamente, a idéia é produzir um formato que, como resultado, gere uma cadeia de caracteres do tipo:

d36a999#1999#a70#Magalhaes, A.C.#

através da qual, o campo 36 é apagado, é incluído 1999 no campo 999 e Magalhaes, A.C. no campo 70. Esta string (cadeia de caracteres) pode ser provida por um formato como o seguinte:

if p(v36) and a(v999) then 'd36a999#'v47'#'fi,"a70#"v36"#"

A string é formada a partir da existência do campo 36, cujo conteúdo é Magalhaes, A.C., e a ausência do campo 999. Exemplos:
Criar uma base com todos os registros da base de origem (CDS), eliminando os
campos 69 e 70:

mx cds proc='d69d70' create=Saída now -all

Dica: Se a base Saída já existir, toda a informação prévia será perdida.
Incluir informação no campo 999 para um grupo de registros:

mx cds proc='A999#1998#' from=100 to=120 copy=cds now -all

Neste exemplo as alterações são realizadas na mesma base utilizada como fonte de entrada, portanto, as alterações se refletirão na mesma base.
Importar um arquivo ISO-2709 com o MFN armazenado no campo 999 dos
registros ISO:

mx iso=datos.iso proc='='v999 create=master -all now

Exportar registros para um arquivo ISO-2709, incluindo MFN do registro de
origem no campo 999 dos registros ISO:

mx master proc='D999A999/'mfn'/' -all now iso=dato.iso

Função ‘A’ (inclusão de campo) att#str#
A função ‘A’ é composta por:

Comando Descrição
a Indica que será incluído um campo.
tt Tag do campo onde os dados serão incluídos.
# Separador entre tt e os dados.
O separador pode ser qualquer caráter, desde que não seja numérico
e que não ocorra na cadeia de caracteres a incluir.
str Cadeia de caracteres a incluir.
A cadeia pode entrar como uma cadeia de caracteres estática ou ser
extraída de um campo de dados do mesmo registro ou de outro
(inclusive de um registro de outra base de dados).
# Separador que indica o fim da string de dados.

Dica: O separador (#) deve ser o mesmo usado para início e fim de dados.
O exemplo:

mx cds proc='A999#1998#' from=100 to=120 copy=cds now -all

É equivalente a:

mx cds "proc='a999{1998{'" from=100 to=120 copy=cds now -all

Exemplos:
• Eliminar o campo 70 e incluir somente a primeira ocorrência desse campo
como nova ocorrência do campo 100. Os seguintes exemplos apresentam duas formas de realizar a mesma tarefa:

mx cds "proc='d70a100#',v70[1],'#' " from=10 to=20 now -all
mx cds "proc='d70',|a100@|v70[1]|@| " from=10 to=20 now -all

•Apagar todos os campos do registro quando o campo 24 contém a palavra water, e exportar o registro para uma base chamada Saída . O formato que contem as instruções para o proc deve ser obtido de um arquivo externo (teste).

mx cds proc=@teste now –all create=Saída

O arquivo teste contem a linha de formato: If v24:’water’ then ‘D*’ fi
Dica:
A comparação distingue maiúsculas de minúsculas, por isso water e Water não produzirão os mesmos resultados. Por outro lado, a comparação S(mpu,v24):’WATER’ não distingue maiúsculas
de minúsculas.
Também se pode operar sobre a mesma base de dados utilizada como fonte de
entrada.

mx CDS proc='d70' copy=CDS now to=1

•Ordenar os campos do registro por número de tag:

mx CDS proc='s' copy=CDS now –all

Registro de entrada:

mfn= 1
44 «Methodology of plant eco-physiology: proceedings of the Montpellier Symposium»
50 «Incl. bibl.»
69 «Paper on: <plant physiology><plant transpiration> <measurement and instruments>»
24 «Techniques for the measurement of transpiration of individual plants»
26 «^aParis^bUnesco^c-1965»
30 «^ap. 211-224^billus.»
70 «Magalhaes, A.C.»
70 «Franco, C.M.»

Registro de saída:

mfn= 1
24 «Techniques for the measurement of transpiration of individual plants»
26 «^aParis^bUnesco^c-1965»
30 «^ap. 211-224^billus.»
44 «Methodology of plant eco-physiology: proceedings of the Montpellier Symposium»
50 «Incl. bibl.»
69 «Paper on: <plant physiology><plant transpiration><measurement and instruments>»
70 «Magalhaes, A.C.»
70 «Franco, C.M.»

Observe que no exemplo a saída do processo se realiza na mesma base de dados de entrada.
Função R<mf>,<mfn>
Inclui no arquivo mestre de saída os campos do registro ativo.

<mf> nome do master de entrada de dados
<mfn> número do registro

mx null proc=’a10/1/a20/1/’ create=xxx
10 «1»
20 «1»
mx null proc=’a20/2/’ append=xxx
20 «2»
mx out
proc=’Rxxx,1′ proc=’Rxxx,2′ copy=out count=1 now
mfn= 1
10 «1»
20 «1»
20 «2»
Grava no master out no registro ativo (mfn=1) os campos dos registros mfn=1 e mfn=2 do master xxx.
Função <TAG[ <stripmarklen>[ <minlen>]]><dados></TAG>
Inclui <dados> como uma nova ocorrência do campo <tag>. As marcações no estilo “<marks>” são eliminadas do texto até um máximo de <stripmarklen> caracteres. Se o texto, após a retirada dos delimitadores “<marks>”, for menor do que <minlen> caracteres, a edição não será efetuada.
<tag> Etiqueta do campo
<stripmarklen> Tamanho máximo da marcação (infinito por default)
<minlen> Tamanho mínimo do campo resultante (zero por default)
• Inclui uma ocorrência com o termo text no campo 10
mx null “proc='<10>text</10>'”
mfn= 1
10 «text»
•Inclui uma ocorrência com o termo x<mark>y</mark>z no campo 10
eliminando as marcações <mark></mark> mas não o conteúdo
mx null “proc='<10>x<mark>y</mark>z</10>'”
mfn= 1
10 «xyz»
•Inclui uma ocorrência com o termo x<mark>y</mark>z no campo 10
eliminando a marcação <mark> em função do critério de tamanho da
marcação, neste caso seis caracteres.
mx null “proc='<10 6>x<mark>y</mark>z</10>'”
mfn= 1
10 «xy</mark>z»
•Inclui uma ocorrência com o termo x<mark>y</mark>z no campo 10
eliminando as marcações <mark></mark> mas não seu conteúdo, pois tem o
mínimo esperado de três caracteres.
mx null “proc='<10 99 3>x<mark>y</mark>z</10>'”
mfn= 1
10 «xyz»
•Não inclui a ocorrência com o termo x<mark>y</mark>z no campo 10, pois
após a eliminação das marcações <mark></mark> o conteúdo não alcançou o
mínimo esperado de quatro caracteres.
mx null “proc='<10 99 4>x<mark>y</mark>z</10>'”
mfn= 1
 

Deixe um comentário