AUTO-RETURN, RUN, PROCEDURE, GO-ON

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

  1. fdantas

    fdantas Administrator Moderador

    /******************** STATEMENTS**************************************
    **
    ** INITIAL (EXTENT)
    ** E possivel inicializar cada uma das
    ** extensoes de uma variavel, na pro-
    ** pria definicao da variavel.
    **
    ** campo-1 NO-LABEL... (DEFINE FRAME...)
    ** Trata-se de uma caracteristica indi-
    ** vidual de um determinado dado que
    ** ocupa espaco na frame.
    **
    ** SKIP(n)
    ** Ideal para formatar frames quanto
    ** a salto de linha.
    **
    ** CHOOSE FIELD
    ** Cria um hightlight sobre as diversas
    ** extensoes de uma variavel e alimenta
    ** a variavel ambiente FRAME-VALUE com
    ** o valor escolhido pelo usuario.
    **
    ** GO-ON (F5) (CHOOSE FIELD...)
    ** Indica uma tecla opcional para
    ** confirmar o CHOOSE alem do RETURN
    **
    **
    ** AUTO-RETURN (CHOOSE FIELD...)
    ** Dispensa o uso do RETURN.
    **
    ** PROCEDURE nome-procedure: (Internal Procedure)
    ** Sao sub-procedures escritas no texto
    ** da propria procedure principal
    **
    ** RETURN. (Procedure Exit)
    ** Finaliza uma procedure.
    **
    ** RUN procedure-interna.
    ** Convoca uma procedure interna.
    **
    **********************************************************************/

    Código:
    DEF VAR opcao   AS CHAR EXTENT 5 
                     INITIAL ["Primeiro",
                              "Seguinte",
                              "Anterior",
                              "Ultimo",
                              "Fim"].
    DEFINE FRAME f-state
         SPACE(15) state.state       SKIP
         SPACE(15) state.state-name  SKIP
         SPACE(15) state.region      SKIP(1)
         opcao NO-LABEL    SKIP
         WITH FRAME f-state ROW 6 COLUMN 5 
         COLOR BLACK/GRAY TITLE "Navegacao"
         SIDE-LABELS WIDTH 73.
         
    DISPLAY opcao WITH  FRAME f-state.
    VIEW FRAME f-state.
    
    REPEAT:
      CHOOSE FIELD opcao GO-ON (F5) AUTO-RETURN 
    		   WITH FRAME f-state.            
      IF FRAME-VALUE = "PRIMEIRO" THEN
         DO: 
            FIND FIRST state NO-ERROR.
            RUN mostra-dados.
         END.
      ELSE
      IF FRAME-VALUE = "Seguinte" THEN
         DO: 
            FIND NEXT state NO-ERROR.
            RUN mostra-dados.
         END.
      ELSE
      IF FRAME-VALUE = "ANTERIOR" THEN
         DO: 
            FIND PREV state NO-ERROR.
            RUN mostra-dados.
         END.
      ELSE
      IF FRAME-VALUE = "ULTIMO" THEN
         DO: 
            FIND LAST state NO-ERROR.
            RUN mostra-dados.
         END.                 
      ELSE
         RETURN. 
    END.     
       
    
    PROCEDURE mostra-dados:        
       IF AVAIL state THEN 
           DISPLAY state.state       
                   state.state-name  
                   state.region      
              WITH FRAME f-state.
    END.

Compartilhe esta Página