Usando comandos de entrada/saída REXX

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 99063
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Sumário
Este artigo lista as capacidades de entrada/saída da linguagem de programação REXX e fornece exemplos.
Mais Informações
Aviso de isenção de responsabilidade: Este artigo é fornecido para os usuários capazes de desenvolver programas com as informações apresentadas; não é um tratamento abrangente de idioma, mas em vez disso, uma referência rápida para ajudar alguém a escrever rotinas simples. A Microsoft não é possível oferece suporte a esforços programação além da reprodução e enviar problemas com a implementação de linguagem propriamente dito. Se você precisar de mais assistência, consulte referências REXX como "A REXX linguagem, uma abordagem prática à programação" por M. f. Cowlishaw, Prentice Hall, Englewood Cliffs, 1985.

Exemplos são fornecidos na parte inferior da listagem. Chaves ({}) são usados para indicar comentários.

CHARIN (file|input_stream|kbd start_read, number_to_read) {retorna number_to_read caracteres começando com a posição de arquivo especificada pelo start_read (start_read não podem ser especificadas input_streams como COM1). Especificar zero para number_to_read reposiciona atual "ler ponto" para start_read. Se o número de bytes solicitado não está disponível, mas pode se tornar disponível (isto é, COMn) e CHARIN espera neles, caso contrário, uma condição NOTREADY resultados. }

CHAROUT(output_stream|File|Screen, data, start_write) {gravações caracteres para o destino especificado. Para arquivos, se os dados não for especificados, em seguida, "gravação ponto" é movido para start_write. Normalmente o ponto de gravação está no final do arquivo para que dados sempre são acrescentados ao arquivo por um CHAROUT. Se nem 'dados' ou start_write for fornecido, em seguida, o arquivo é fechado). Processamento pára até que CHAROUT completa ou uma condição de erro é retornada. }

CHARS(input_stream|File|KBD) {retorna o número de caracteres disponíveis para leitura. Para STDIN ela sempre retorna 1 se houver dados (caso contrário zero). Ele sempre retorna 1 para dispositivos dos / 2. }

LINEIN(from_this_source, top_of_source?, number_of_lines) {retorna a linha de ler ou zero (from_this_source é aberta automaticamente). Se top_of_source é especificado como 1 (o valor só é válido) atual ler ponto é redefinido para o primeiro byte na origem. Number_of_lines é zero (para reposicionar o ponto de leitura) ou 1. }

LINEOUT (to_this_target this_data, top_of_target?) {Retorna o número de linhas restante a ser gravado (normalmente um erro) depois this_data é gravado para to_this_target, se top_of_target? é definida como 1, em seguida, a posição de gravação é definida para o primeiro byte do destino, se nem this_data ou top_of_target for especificado, to_this_target é fechado.}

LINES(Source) {retorna 1 se houver mais dados disponíveis da fonte, zero caso contrário.}

PULL var1 var2... var? {Retorna entrada para as variáveis especificadas. Se mais 'palavra' que variáveis forem especificada, as palavras à direita em uma linha todos são colocadas na última variável. O efeito de PULL, com ou sem variáveis especificadas, é para esvaziar a fonte de entrada. }

PUSH var1 var2... var? {coloca o conteúdo das variáveis na fonte de entrada. Cada PUSH separado representa uma linha na fonte de entrada. Exemplo: PUSH a b c criará uma linha na fonte de entrada que contém o conteúdo da, b e c enquanto de envio; b PUSH; PUSH c coloca três linhas na fonte de entrada, um com o conteúdo de um, um segundo, com o conteúdo de b e um terceiro com o conteúdo do c.}

QUEUE var1 var2 . var? {coloca as variáveis no final da fila atual. Cada QUEUE separado coloca uma linha separada na fonte de entrada. Usando o exemplo PUSH acima, um 'xyz QUEUE' feito após 'PUSH c' colocaria conteúdo do xyz na fonte de entrada como se 'xyz PUSH' tivesse sido feito antes do ' PUSH um '. }

QUEUED() {retorna o número de linhas na fila de REXX atual.}

Expressão SAY {é como o comando @ echo do MS-DOS, mas avalia uma expressão antes de exibi-lo na tela.}

SOURCELINE(n) {retorna 'n' número de linha do programa atual ou, se ' n ' não for especificado, o número total de linhas de origem do programa.}

STREAM(I/O_stream, type_of_action, specific_command) {retorna informações de um fluxo (dados) com base na type_of_action que pode ser: ' C'ommand (requer um specific_command), ' D'escription (um superconjunto de ' S'tate possivelmente retornar informações adicionais) e ' S'tate (que retorna o estado atual, como erro, NOTREADY, READY, isso é normalmente em um arquivo aberto), são specific_commands: abra, fechar, busca offset, QUERY EXISTS, QUERY SIZE, DATETIME QUERY. Os três últimos retornam um fluxo caminho, tamanho e data/hora se o fluxo de existir. }

Exemplo (explicação segue):

(Você é incentivados a extrair o código a seguir e executá-lo. Se você fizer isso, lembre-se incluir o comentário de início para que OS/2 reconhece-lo como um arquivo REXX. Para fazer isso, você precisará criar dois arquivos: Pedidos e INSTOCK. Além disso Certifique-se de que você não tem um arquivo denominado RÓTULOS na pasta onde você executar o programa. Pedidos possui o seguinte layout de registro sem registros de separação de retorno de carro/linha feeds:
temp_line = STREAM('instock','C','QUERY EXISTS')IF temp_line = '' THENDO    SAY Stock exhausted    EXITENDtemp_line = STREAM('orders','C','QUERY EXISTS')IF temp_line = '' THENDO    SAY No orders    EXITENDtemp_line = SOURCELINE(1)PUSH "Labels produced by " temp_linePULL temp_linen = LINEOUT('labels',temp_line)n = LINEOUT('labels','')DO WHILE ((CHARS('instock') > 0) & (LINES('orders') > 0))lname = CHARIN('orders',,8)fname = CHARIN('orders',,5)initial = CHARIN('orders',,1)PUSH fname initial lnamecust_addr = CHARIN('orders',,10)city_st_zip = CHARIN('orders',,16)QUEUE cust_addrQUEUE city_st_zippart_desc = LINEIN('instock',,1)PULL first_linen = CHAROUT('labels',first_line)n = LINEOUT('labels',part_desc)DO WHILE queued() > 0PULL temp_linen = LINEOUT('labels', temp_line)ENDEND				
as linhas de doze primeiro usar o comando STREAM para testar a existência dos arquivos sendo usados e exibir mensagens de erro usando o comando SAY se eles não são encontrados. Temp_line é usado como uma seqüência de armazenamento de trabalho.

Linha 13 a 17 use o comando SOURCELINE para obter a primeira linha de origem deste programa. Tudo o que você coloca nesse local será gravada como a primeira linha do arquivo de ETIQUETAS. O PUSH efetivamente combina o resultado de SOURCELINE com um prefixo explicativo que é recebido de volta em temp_line e gravado RÓTULOS com o comando LINEOUT. PUSH e PULL usam uma fila interna de REXX interna como armazenamento temporário. Cada PUSH cria uma linha carro retorno/linha-delimitado na fila e cada PULL remove uma linha.

Linha 18 usa os caracteres e LINES comandos para fazer com que o loop end quando o final de pedidos ou INSTOCK for encontrado.

19-21 Ler três variáveis usando CHARIN desde a pedidos de linhas não é um arquivo separado por linha. PUSH na linha 22 reorganiza essas três variáveis para saída.

As variáveis ler linhas 23 e 24 são enfileiradas nas linhas 25 e 26 para colocar o endereço e Cidade, estado/CEP após o nome na fila interna REXX. Isso permite que o endereço completo sejam colocadas na ordem desejada, simplesmente extrair da parte superior da fila interna.

LINHA é usada na linha 27 porque INSTOCK é um arquivo separado por linha. PULL, em seguida, é usada na linha 28 para obter o nome que é saído usando CHAROUT na linha 29. CHAROUT é usado porque ele não adiciona um carro-retorno /-avanço de linha e isso é desejado para colocar a descrição INSTOCK próxima ao nome no arquivo de ETIQUETAS. Isso é seguido por LINEOUT na linha de 30 para concluir a linha.

Na linha 31 o comando QUEUED é usado para testar os dados restantes na fila e gravá-la RÓTULOS.
2.10 2.1 .10a 2.1a 2,20 2.2

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 99063 - Última Revisão: 07/30/2001 13:49:00 - Revisão: 1.0

  • kbmt KB99063 KbMtpt
Comentários