INPUT parameter, OUTPUT parameter

Discussão em 'Comandos Básicos' iniciado por fdantas, Fevereiro 3, 2009.

  1. fdantas

    fdantas Administrator Moderador

    /******************** STATEMENTS**************************************
    **
    ** (INPUT parameter, OUTPUT parameter) (RUN)
    ** E uma forma de passar informacoes
    ** entre programa pai e programa filho,
    ** porem predefinindo as direcoes.
    **
    **********************************************************************/

    Código:
    DEFINE VARIABLE ender AS RECID.
    DEF BUTTON bt-fim LABEL "FI&M".
    
    DEFINE FRAME A 
       SKIP(1)  
       customer.cust-num       COLON 18     
       customer.name           COLON 18     
       customer.credit-limit   COLON 18     
       customer.balance        COLON 18     
       customer.phone          COLON 18  SKIP(1)   
       SPACE(4) bt-fim       
       WITH CENTERED ROW 4
       SIZE 42 BY 9 SIDE-LABELS.  
       
    PROCEDURE show:   
       DISP customer.cust-num      
            customer.name          
            customer.credit-limit 
            customer.balance       
            customer.phone         
            bt-fim 
            WITH FRAME A.   
    END.                
    
    FIND FIRST customer. 
    
    RUN show.
    
    ENABLE customer.cust-num bt-fim  WITH FRAME A.  
    
    ON F5 OF customer.cust-num 
       DO: 
          RUN programaFilho.i (INPUT  RECID(customer),
                          OUTPUT ender).  
          FIND customer WHERE
              RECID(customer) = ender.
          RUN show.    
       END.       
    
    WAIT-FOR CHOOSE OF bt-fim.
    Conteudo Programa Filho

    Código:
    /******************** STATEMENTS**************************************
    **              
    **   DEF INPUT  PARAM...  
    **      E um alocacao de memoria preparada 
    **      para receber um determinado valor do
    **      programa pai.
    **
    **   DEF OUTPUT PARAM...
    **      E um alocacao de memoria preparada 
    **      para enviar um determinado valor ao
    **      programa pai.        
    **
    **   REPOSITION
    **      Coloca o hightlight em uma determinada
    **      linha do BROWSE.
    **
    **********************************************************************/
    
    DEF INPUT  PARAM nr-id AS RECID.
    DEF OUTPUT PARAM ENDER AS RECID.
    
    DEF QUERY  q-cust FOR customer.     
    
    DEF BROWSE b-cust QUERY q-cust
        DISPLAY customer.cust-num
                customer.name 
                WITH SIZE 33 BY 10 SEPARATORS
                TITLE "CLIENTES". 
                
    OPEN QUERY q-cust FOR EACH customer.    
    
    REPOSITION q-cust TO RECID nr-id.
    
    DEF BUTTON bt-fim LABEL "FI&M".
    
    DEFINE FRAME A   
       b-cust SKIP(1)
       SPACE(10) bt-fim SKIP(1)
       WITH CENTERED SIDE-LABEL
       ROW 4.
       
    DISP b-cust bt-fim WITH FRAME A.   
    
    ENABLE ALL WITH FRAME A.  
    
    ON VALUE-CHANGED OF b-cust
       ASSIGN ender = RECID(customer).
    
    ON MOUSE-MOVE-DBLCLICK OF B-CUST
       APPLY "CHOOSE" TO BT-FIM.
    
    ON RETURN OF B-CUST
       APPLY "CHOOSE" TO BT-FIM.
    
    ON CHOOSE OF bt-fim
       APPLY "VALUE-CHANGED" TO b-cust.
    
    ON CHOOSE OF BT-FIM
       APPLY "WINDOW-CLOSE" 
                        TO CURRENT-WINDOW.
         
    WAIT-FOR CHOOSE OF bt-fim.
    

Compartilhe esta Página