?|??
 Exibe um ou mais valores no console
------------------------------------------------------------------------------

 Sintaxe

     ? | ?? [<lista expr>]

 Argumentos

     <lista expr> é uma lista de valores a ser exibida e pode consistir
     em qualquer combinaçao de tipos de dados, incluindo memo.

     Se nenhum argumento foi especificado com o ? usado, uma sequência
     carriage return/line feed é enviada ao console.  Se for utilizado ??
     sem argumento, nada ocorre.

 Descriçao

     ? e ?? sao comandos de console que exibem os resultados de uma ou mais
     expressoes no console, separadas por espaço.  Estes comandos sao
     sinônimos para as funçoes QOUT() e QQOUT().

     Embora ambas as funçoes operem de forma similar, ? e ?? diferem
     levemente.  ? envia um carriage return/line feed ao console antes de
     exibir os resultados da lista de expressoes.   ?? exibe a saída na
     posicao corrente do cursor ou cabeça de impressao.  Isto permite que
     você use sucessivos ?? para exibir a saída na mesma linha.

     Após ? ou ??, o cursor ou cabeça de impressao é colocado uma posiçao à
     direita do último caracter exibido.  Se SET PRINTER está OFF, ROW() e
     COL() serao atualizados de forma a refletir a nova posiçao do cursor.
     Se SET PRINTER está ON, PROW() e PCOL() sao atualizados para refletir a
     nova posiçao da cabeça de impressao.

     Se a saída de um comando ? ou ?? atinge a borda da tela definida em
     MAXCOL(), este muda para a próxima linha.  Se a saída atinge a última
     linha de tela definida em MAXROW(), a tela roda para cima uma linha.

     A saída de ? e ?? pode ser enviada à impressora especificando SET
     PRINTER ON antes de iniciar a saída.  A saída de ambos os comandos pode
     ser enviada para um arquivo texto, usando SET ALTERNATE TO <xcArquivo>
     para criar um arquivo, e SET ALTERNATE ON para iniciar a saída para
     este arquivo.  Da mesma forma que outros comandos, SET CONSOLE OFF pode
     ser utilizado para suprimir a saída em tela sem afetar a saída para
     impressora ou arquivo texto.

     Para formatar qualquer expressao especificada, você pode usar
     TRANSFORM() ou uma funçao definida pelo usuário.  Se você necessita
     acertar um comprimento variável para alinhar colunas, você pode usar as
     funçoes PAD() para alinhar à esquerda, direita ou centralizar. Veja os
     exemplos abaixo.

 Exemplos

     O exemplo a seguir imprime uma lista a partir do arquivo Salesman.dbf
     usando comandos ? em combinaçao com PADR() para alinhamento colunar:

     LOCAL nPage := 0, nLine := 99
     USE Salesman INDEX Salesman NEW
     SET PRINTER ON
     SET CONSOLE OFF
     DO WHILE !EOF()
        IF nLine > 55
           IF nPage != 0
                EJECT
           ENDIF
           ? PADR("Página", LTRIM(STR(nPage++)), 72)
           ?? DTOC(DATE())
           ?
           ?
           ? PADC("Vendas do Mes", 79)
           ?
           nLine := 5
        ENDIF
        ? Name, Address, PADR(RTRIM(City) + "," + State, 20), Zipcode
        nLine++
        SKIP
     ENDDO
     SET CONSOLE ON
     SET PRINTER OFF
     CLOSE Salesman

 Arquivos:  Biblioteca CLIPPER.LIB.
 To download this example - click here.

See Also: @...SAY SET CONSOLE SET PRINTER PAD() TRANSFORM()