*ISAPRO
***********************************************************************
*
*D    Rutinas para desplegar las ayudas en un programa
*
*D    Se usan:
*
*D    DESPLEGAR-AYUDA-A   Para ayudas con numero del area
*D    DESPLEGAR-AYUDA-AV  Para ayudas con numero del area mas
*D                        la de la variable
*D    DESPLEGAR-AYUDA-O   Para ayudas con la opci¢n de menu
*D    DESPLEGAR-AYUDA-AO  Para ayudas con numero de area mas
*D                        la opci¢n de menu
*D    SACAR-AYUDA         Para sacar una ayuda
*
*D    En estas ayudas se hace el siguiente proceso:
*
*D    -Se remplaza [AYUDA-DATO-1] por el contenido de AYUDA-DATO-1,
*D     [AYUDA-DATO-2] por AYUDA-DATO-2, ... hasta 5
*D    -Se incluye lo que este entre [T1] .... [F] si la variable
*D     de AYUDA-TEXTO-1 es SI, si puede haber otro [AYUDA-DATO-x]
*D    -Igual para [T2] .... [F] y [T3] .... [F] 
*D    -En la de DESPLEGAR- se incluye al final si las ayudas de
*D     modo que estan en AYUDAP
*D    
*
***********************************************************************
*
*D    Ayudas de areas, sacar numero de area y programa, buscar en
*D    AYUDAA y desplegar. Si no existe poner letrero.
*
      RUTINA DESPLEGAR-AYUDA-A
*
      SACAR PARAMETROS PROGRAMA INI-PRO NUMERO-DE-AREA NUM-AREA
      BUSCAR DISCO AYUDAA EJECUTA 15 PRIN-G1 NUM-AREA INI-PRO
      LEER DISCO AYUDAA TEXTO-AYUDA
      EJECUTA 20
*
15    FORMAR TEXTO TEXTO-AYUDA CON 'No hay ayuda para el area ' $
            /S /INICIO
      FORMAR TEXTO TEXTO-AYUDA CON NUM-AREA
      FORMAR TEXTO TEXTO-AYUDA CON ', en el programa '
      FORMAR TEXTO TEXTO-AYUDA CON INI-PRO
*
20    EJECUTA RUTINA INCLUIR-MODO REMPLAZAR DESPLEGAR-AYUDA-X
      RETORNO
*
*D    Ayudas de areas y variables, sacar la variable y el area, buscar en
*D    AYUDAA y en AYUDAV con nombre de programa o blanco, desplegar.
*D    Si no existe poner letrero
*
      RUTINA DESPLEGAR-AYUDA-AV
*
      SACAR PARAMETROS NOMBRE-DE-VARIABLE NOM-VAR PROGRAMA INI-PRO $
       NUMERO-DE-AREA NUM-AREA
      BUSCAR DISCO AYUDAA EJECUTA 5 PRIN-G1 NUM-AREA INI-PRO
      LEER DISCO AYUDAA TEXTO-AYUDA
      MOVER TEXTO-AYUDA A TEXTO-AUX-1
      EJECUTA 10
*
5     FORMAR TEXTO TEXTO-AYUDA CON 'No hay ayuda para la variable ' $
            /S /INICIO
      FORMAR TEXTO TEXTO-AYUDA CON NOM-VAR
      FORMAR TEXTO TEXTO-AYUDA CON ', del area '
      FORMAR TEXTO TEXTO-AYUDA CON NUM-AREA
      EJECUTA 25
*
10    BUSCAR DISCO AYUDAV EJECUTA 15 PRIN-G1 NOM-VAR INI-PRO
      LEER DISCO AYUDAV TEXTO-AYUDA
      MOVER TEXTO-AYUDA A TEXTO-AUX-2
      EJECUTA 20
      IGUAL AYUDAV INI-PRO INI-PRO-A
15    MOVER ' ' A INI-PRO-A
      BUSCAR DISCO AYUDAV EJECUTA 25 PRIN-G1 NOM-VAR INI-PRO-A
      LEER DISCO AYUDAV TEXTO-AYUDA
      MOVER TEXTO-AYUDA A TEXTO-AUX-2
20    FORMAR TEXTO TEXTO-AYUDA CON TEXTO-AUX-1 /INICIO
      FORMAR TEXTO TEXTO-AYUDA CON TEXTO-AUX-2
*
25    EJECUTA RUTINA INCLUIR-MODO REMPLAZAR DESPLEGAR-AYUDA-X
      RETORNO
*
*D    Ayudas de opciones de menu, sacar la opcion del menu, buscar en
*D    AYUDAP y desplegar. Si no existe poner letrero
*
      RUTINA DESPLEGAR-AYUDA-O
*
      SACAR PARAMETROS OPCION INI-PRO
      BUSCAR DISCO AYUDAP EJECUTA 10 PRIN-G1 INI-PRO
      LEER DISCO AYUDAP TEXTO-AYUDA
      EJECUTA 20
*
10    FORMAR TEXTO TEXTO-AYUDA CON 'No hay ayuda para la opci¢n ' $
            /S /INICIO
      FORMAR TEXTO TEXTO-AYUDA CON INI-PRO
*
20    EJECUTA RUTINA INCLUIR-MODO REMPLAZAR DESPLEGAR-AYUDA-X
      RETORNO
*
*D    Ayudas de numero de area mas opciones de menu, sacar el numero del
*D    area y la opcion del menu, buscar en AYUDAA y en AYUDAP, desplegar.
*D    Si no existe poner letrero
*
      RUTINA DESPLEGAR-AYUDA-AO
*
      SACAR PARAMETROS PROGRAMA INI-PRO NUMERO-DE-AREA NUM-AREA 
      BUSCAR DISCO AYUDAA EJECUTA 10 PRIN-G1 NUM-AREA INI-PRO
      LEER DISCO AYUDAA TEXTO-AYUDA
      MOVER TEXTO-AYUDA A TEXTO-AUX-1
      EJECUTA 15
*
10    FORMAR TEXTO TEXTO-AYUDA CON 'No hay ayuda para el area ' $
            /S /INICIO
      FORMAR TEXTO TEXTO-AYUDA CON NUM-AREA
      FORMAR TEXTO TEXTO-AYUDA CON ', en el programa '
      FORMAR TEXTO TEXTO-AYUDA CON INI-PRO
      EJECUTA 20
*
15    SACAR PARAMETROS OPCION INI-PRO
      BUSCAR DISCO AYUDAP EJECUTA 20 PRIN-G1 INI-PRO
      LEER DISCO AYUDAP TEXTO-AYUDA
      MOVER TEXTO-AYUDA A TEXTO-AUX-2
      FORMAR TEXTO TEXTO-AYUDA CON TEXTO-AUX-1 /INICIO
      FORMAR TEXTO TEXTO-AYUDA CON TEXTO-AUX-2
*
20    EJECUTA RUTINA INCLUIR-MODO REMPLAZAR DESPLEGAR-AYUDA-X
      RETORNO
*
*D    Rutina para sacar una ayuda con NUM-AYUDA
*
      RUTINA SACAR-AYUDA
      CONVERTIR NUM-AYUDA A INI-PRO /POS. 1 1 /LONG. 4
*
      BUSCAR DISCO AYUDAP EJECUTA 10 PRIN-G1 INI-PRO
      LEER DISCO AYUDAP TEXTO-AYUDA
      EJECUTA 20
*
10    FORMAR TEXTO TEXTO-AYUDA CON 'No hay ayuda para ' $
            /S /INICIO
      FORMAR TEXTO TEXTO-AYUDA CON INI-PRO
*
20    EJECUTA RUTINA REMPLAZAR
      RETORNO
*
*********************************************************************
*
*D    Incluir ayuda de modo
*
      RUTINA INCLUIR-MODO
      SACAR PARAMETROS MODO INI-PRO
      BUSCAR DISCO AYUDAP EJECUTA 10 PRIN-G1 INI-PRO
      IGUAL AYUDAP TEXTO-AYUDA TEXTO-AUX-3
      LEER DISCO AYUDAP TEXTO-AUX-3
      FORMAR TEXTO TEXTO-AYUDA CON TEXTO-AUX-3
10    RETORNO
*
**********************************************************************
*
*D    Rutina de rremplazo
*
      RUTINA REMPLAZAR
*
*D    Remplazar las variables de AYUDA-DATO-x
*
      FORMAR TEXTO TEXTO-AYUDA-DESP CON TEXTO-AYUDA /INICIO $
        /HASTA-MARCA '[' ']' AYUDA-CLAVE /NO-ENCONTRADA 20 $
        /ERROR 19 /SACAR-DESDE-INICIO
*
5     SI AYUDA-CLAVE <> 'AYUDA-DATO-1' EJECUTA 6
      FORMAR TEXTO TEXTO-AYUDA-DESP CON AYUDA-DATO-1
      EJECUTA 17
6     SI AYUDA-CLAVE <> 'AYUDA-DATO-2' EJECUTA 7
      FORMAR TEXTO TEXTO-AYUDA-DESP CON AYUDA-DATO-2
      EJECUTA 17
7     SI AYUDA-CLAVE <> 'AYUDA-DATO-3' EJECUTA 8
      FORMAR TEXTO TEXTO-AYUDA-DESP CON AYUDA-DATO-3
      EJECUTA 17
8     SI AYUDA-CLAVE <> 'AYUDA-DATO-4' EJECUTA 9
      FORMAR TEXTO TEXTO-AYUDA-DESP CON AYUDA-DATO-4
      EJECUTA 17
9     SI AYUDA-CLAVE <> 'AYUDA-DATO-5' EJECUTA 11
      FORMAR TEXTO TEXTO-AYUDA-DESP CON AYUDA-DATO-5
      EJECUTA 17
*
*D    Remplazar las variables de AYUDA-TEXTO
*
11    SI AYUDA-CLAVE <> 'T1' EJECUTA 12
      SI AYUDA-TEXTO-1 <> 'SI' EJECUTA 15
      EJECUTA 17
12    SI AYUDA-CLAVE <> 'T2' EJECUTA 13
      SI AYUDA-TEXTO-2 <> 'SI' EJECUTA 15
      EJECUTA 17
13    SI AYUDA-CLAVE <> 'T3' EJECUTA 14
      SI AYUDA-TEXTO-3 <> 'SI' EJECUTA 15
      EJECUTA 17
14    SI AYUDA-CLAVE = 'F' EJECUTA 17
      ERROR 'Clave inv lida de ayuda' AYUDA-CLAVE
      EJECUTA 20
*
*D    Brincarse hasta otro [F]
*
15    FORMAR TEXTO TEXTO-AUX-1 CON TEXTO-AYUDA $
        /HASTA-MARCA '[' ']' AYUDA-CLAVE /NO-ENCONTRADA 16 /ERROR 19
      SI AYUDA-CLAVE <> 'F' EJECUTA 15
      EJECUTA 17
16    ERROR 'Se detect¢ [T1], [T2] o [T3] y no hay [F]'
      EJECUTA 20
*
*D    Buscar otro [ ]
*
17    FORMAR TEXTO TEXTO-AYUDA-DESP CON TEXTO-AYUDA $
        /HASTA-MARCA '[' ']' AYUDA-CLAVE /NO-ENCONTRADA 20 /ERROR 19
      EJECUTA 5
*
19    ERROR 'Error al formar ayuda no hay ] final'
*
20    RETORNO
*
***********************************************************************
*
*D    Desplegar la ayuda
*
      RUTINA DESPLEGAR-AYUDA-X
*
*D    Calcular renglon y columna del area de ayuda. Para ello
*D    intenta ponerla abajo de la opci¢n, perso si el area es
*D    de menos de 6 renglones por 15 columnas la pone a la
*D    izquierda o derecha de la terminal.
*
*
20    SACAR PARAMETROS RENGLON-COLUMNA REN-CE COL-CE $
                      CARACTERES-DE-TEXTO CAR-TEX
*
      COL-AYUDA = COL-CE
      TOT-COL-AYUDA = 80 - COL-AYUDA
      SI TOT-COL-AYUDA > 60 TOT-COL-AYUDA = 60
*
      REN-AYUDA = REN-CE + 1
      TOT-REN-DISP = 21 - REN-AYUDA
      TOT-REN-AYUDA = CAR-TEX / TOT-COL-AYUDA + 5
      SI TOT-REN-AYUDA > TOT-REN-DISP TOT-REN-AYUDA = TOT-REN-DISP
      SI TOT-REN-AYUDA > 15 TOT-REN-AYUDA = 15
*
      SI TOT-REN-AYUDA >= 7 Y TOT-COL-AYUDA >= 14 EJECUTA ETIQUETA 30
      COL-AYUDA = 5
      SI COL-CE <= 40 COL-AYUDA = 45
      TOT-COL-AYUDA = 30
      TOT-REN-AYUDA = CAR-TEX / 30 + 4
      SI TOT-REN-AYUDA > 15 TOT-REN-AYUDA = 15
      REN-AYUDA = 15 - TOT-REN-AYUDA / 2 + 5
*
*D    Desplegar y terminar
*
30    OPCION TERMINAL AREA 9000 /DESPLEGAR /SALVAR-ANTERIORES $
             /EMPALMAR
31    ESCRIBIR TERMINAL TEXTO-AYUDA-DESP
      OPCION TERMINAL AREA 9000 /TERMINAR
*
*D    Revisa F1 para desplegar en toda la pantalla
*
      SACAR PARAMETROS CONDICION-TERMINAR CONDICION-AYUDA
      SI CONDICION-AYUDA <> 1 RETORNO
      REN-AYUDA = 5
      COL-AYUDA = 10
      TOT-REN-AYUDA = 15
      TOT-COL-AYUDA = 60
      OPCION TERMINAL AREA 9000 /DESPLEGAR /SALVAR-ANTERIORES
      EJECUTA 31
*
      OPCION TERMINAL AREA 9000 /TEXTO /POS. REN-AYUDA COL-AYUDA $
         /LONG. TOT-REN-AYUDA TOT-COL-AYUDA /LONG-MAX. 15 60 $
         /TECLAS-DE-FUNCION 1 'PantallaCompleta' $
         /MARCO /COLOR BLANCO-B BLANCO-B AZUL /BN VI $
         /CAMPOS TEXTO-AYUDA-DESP /VAR.
*
      RUTINA DESPLEGAR-DUMY
      EJECUTA RUTINA DESPLEGAR-DUMY
      EJECUTA RUTINA DESPLEGAR-AYUDA-A
      EJECUTA RUTINA DESPLEGAR-AYUDA-AV
      EJECUTA RUTINA DESPLEGAR-AYUDA-O
      EJECUTA RUTINA DESPLEGAR-AYUDA-AO
      EJECUTA RUTINA SACAR-AYUDA
      MOVER ' ' A AYUDA-DATO-1
      MOVER ' ' A AYUDA-DATO-2
      MOVER ' ' A AYUDA-DATO-3
      MOVER ' ' A AYUDA-DATO-4
      MOVER ' ' A AYUDA-DATO-5
      MOVER ' ' A AYUDA-TEXTO-1
      MOVER ' ' A AYUDA-TEXTO-2
      MOVER ' ' A AYUDA-TEXTO-3
      NUM-AYUDA = 0
