->
 Operador alias -- binário                         (Especial)
------------------------------------------------------------------------------

 Sintaxe

     <idAlias>-><idField>
     <idAlias>->(<exp>)
     FIELD-><idVar>
     MEMVAR-><idVar>
     (nWorkArea)-><idField>
     (nWorkArea)->(<exp>)

 Operandos

     <idAlias> é o nome da área de trabalho nao selecionada a ser
     acessada e deve referir-se a uma área de trabalho com um arquivo de
     banco de dados em uso.

     <nAreaTrabalho> é o número da área de trabalho nao selecionada a
     ser acessada.

     <idCampo> é o nome de um campo na área de trabalho <idAlias>.

     <exp> é uma expressao de qualquer tipo de dados a ser executada na
     área de trabalho <idAlias>.  Se for utilizada para o segundo operando
     uma expressao mais complicada do que referência a um único campo, a
     expressao deve ser colocada entre parênteses (()).

     <idVar> é qualquer identificador válido do Clipper.  Conforme o que
     você especificar, FIELD ou MEMVAR, o identificador será forçado para
     uma referência a variável (pública ou privada) de memória ou campo.

 Descriçao

     Quando utilizada com um <idAlias> como o primeiro operando, o operador
     alias (->) acessa informaçoes de campo ou avalia avalia uma expressao
     na área de trabalho indicada.  O operador alias funciona selecionando
     implicitamente o <idAlias> antes de avaliar o operando <idCampo> ou
     <exp>.  Quando a avaliaçao estiver completa, a área de trabalho orignal
     é re-selecionada.  Uma referência alias pode estar em uma exprressao ou
     em uma linha sozinha.  Por exemplo:

     ? Customer->Name
     Customer->(UpdateTransaction())

     Utilizar o operador alias desta maneira permite a você:

       Acessar informaçoes de áreas de trabalho nao selecionadas
        dentro de expressoes

       Acessar informaçoes ambientais de áreas de trabalho nao
        selecionadas

       Acessar informaçoes de áreas de trabalho nao selecionadas em
        modos tais como REPORT e LABEL FORMs

       Escrever código em modo mais compacto

     Além de permitir avaliaçao de expressoes e campos em áreas de trabalho
     nao selecionadas, o operador alias é utilizado para fazer referências
     explícitas a um campo ou variável através do alias MEMVAR ou FIELD.
     MEMVAR força <idVar> a referir-se a um nome de variável de memória, e
     FIELD a força a referenciar um campo de banco de dados.  Estes
     identificadores de alias especiais permitem a você evitar ambiguidade
     quando há conflitos entre nomes de variáveis de memória e campo.
     Lembre-se de que uma referência a um identificador de variável nao
     precedido de alias passa para um campo caso haja tanto uma variável de
     memória e campo com o mesmo nome.  Para anular este padrao, use a opçao
     (/V) ao compilar.

     Além de especificar o alias como identificador, a área de trabalho
     destino pode ser acessada através de uma expressao que retorna o número
     da área de trabalho caso a expressao esteja entre parênteses.  Isto
     permite que os números das áreas de trabalho sejam utilizados como
     handles, o que é útil na passagem de referências a áreas de trabalho
     sem utilizar macros, alias, nomes, etc.

 Exemplos

       O exemplo a seguir demonstra como acessar informaçdoes de um
        banco de dados aberto em uma área de trabalho nao selecionada:

        USE Customer NEW
        USE Invoices NEW

        ? Customer->CustName            // Resulta: Bill Smith
        ? Customer->(RECNO())           // Resulta: 1
        ? Customer->(FOUND())           // Resulta: .F.

        ? Customer->(City + ", " + State + ;
          "  " + Zip)                   // Resulta: ShadowVille, CA  90415

       O exemplo a seguir demonstra a utilizaçao de uma funçao
        definida pelo usuário (Seek()) como um operando do operador alias
        para uma operaçao comum que necessita de uma grande quantidade de
        declaraçoes:

        IF Invoices->(Seek(CustNum))
           <process customer>...
        ELSE
           <process no find>...
        ENDIF
        RETURN

        FUNCTION Seek ( cSearch )
           SEEK cSearch
           RETURN (FOUND())

       O exemplo a seguir demonstra como referenciar explicitamente
        uma variável de memória e de campo com o mesmo nome:

        USE Customer NEW
        MEMVAR->CustName = "Bill Smith"      // Cria uma memvar CustName
        LOCATE FOR MEMVAR->CustName = FIELD->CustName

       O exemplo a seguir demonstra como uma expressao pode ser
        utilizada como um handle de área de trabalho a fim de criar uma
        operaçao em um banco de dados independente da área de trabalho
        corrente:

        cTable1 := "C:Myfile.dbf"
        cTable2 := "D:Myfile.dbf"

        USE (cTable1) NEW
        hArea1 = SELECT()

        USE (cTable2) NEW
        hArea2 = SELECT()

        DoStuff( hArea1, hArea2 )

        FUNCTION DoStuff( hArea1, hArea2 )
           LOCAL nCount, nSave

           nSave := SELECT()
           SELECT (hArea1)

           FOR nCount := 1 TO FCOUNT()
              FIELDPUT( nCount, ( hArea2 )->( FIELDGET( nCount )))
           NEXT

           SELECT (nSave)
           RETURN NIL