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