Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Inhibir ventana de error (https://www.cobolforo.es/showthread.php?t=1092)

Breew 3 de abril de 2020 10:32

Inhibir ventana de error
 
Hola.
Tengo una llamada externa a un editor de texto hecha con CmDDE.
Contemplo la posibiidad de que este el editor en version64 o en version32.
Efectuo la llamada al de 32 y si no existe, que lance directamente el de 64.
Pero me encuentro que aunque chequee el returnvalue, la ventana de aviso de que no existe, me aparece igual y el returnvalue siempre me sale a cero.
Como puedo eliminar el aviso sin que me espere el aceptar de la ventana de aviso?
Código COBOL:
  1.      STRING
  2.      "UEDIT32.EXE LISTADO.TXT"   DELIMITED BY SIZE INTO  DDE-WORD.
  3.      INVOKE CmDDE1 "Execute" USING DDE-WORD POW-SWSHOWNORMAL RETURNING ReturnValue
  4.      
  5.      IF ReturnValue = POW-FALSE THEN GO ULTRAEDIT64 ELSE EXIT PROGRAM.

Muchas gracias.

Joseg 3 de abril de 2020 11:19

Cita:

Citación del post de Breew (Mensaje 5375)
Hola.
Tengo una llamada externa a un editor de texto hecha con CmDDE.
Contemplo la posibiidad de que este el editor en version64 o en version32.
Efectuo la llamada al de 32 y si no existe, que lance directamente el de 64.
Pero me encuentro que aunque chequee el returnvalue, la ventana de aviso de que no existe, me aparece igual y el returnvalue siempre me sale a cero.
Como puedo eliminar el aviso sin que me espere el aceptar de la ventana de aviso?
Código COBOL:
  1.      STRING
  2.      "UEDIT32.EXE LISTADO.TXT"   DELIMITED BY SIZE INTO  DDE-WORD.
  3.      INVOKE CmDDE1 "Execute" USING DDE-WORD POW-SWSHOWNORMAL RETURNING ReturnValue
  4.      
  5.      IF ReturnValue = POW-FALSE THEN GO ULTRAEDIT64 ELSE EXIT PROGRAM.

Muchas gracias.

MinHa sugestão:
Código COBOL:
  1.  SPECIAL-NAMES.
  2.        ENVIRONMENT-NAME  IS ENV1
  3.        ENVIRONMENT-VALUE IS ENV2
  4.  
  5.  WORKING-STORAGE.
  6.   01  WENVVALOR  PIC X(100).
  7.  
  8.  PROCEDURE DIVISION.
  9.           DISPLAY "ProgramW6432" UPON ENV1
  10.           ACCEPT WENVVALOR FROM ENV2
  11.           IF WENVVALOR = SPACES
  12.              MOVE "prog32" TO wPprog  *> 32Bits
  13.           ELSE
  14.              MOVE "prog64" TO wPprog  *> 64Bits
  15.           END-IF

Breew 3 de abril de 2020 16:25

Hola.
No me sale :eek:
No me reconoce el special names.
Código COBOL:
  1.       ENVIRONMENT-NAME  IS ENV1
  2.       ENVIRONMENT-VALUE IS ENV2
(Powercobol v9)


Código:

listar-base SPECIAL-NAMES(2) :  JMN1123I-S  An invalid word 'ENVIRONMENT-NAME' was found. The invalid word and any following code is ignored until the next valid paragraph, section or division.

listar-base (283) :  JMN5100I-S  The class-name specified in the USAGE OBJECT REFERENCE clause is invalid. The class-name is ignored.


Cita:

Citación del post de Joseg (Mensaje 5376)
MinHa sugestão:
Código COBOL:
  1.  SPECIAL-NAMES.
  2.        ENVIRONMENT-NAME  IS ENV1
  3.        ENVIRONMENT-VALUE IS ENV2
  4.  
  5.  WORKING-STORAGE.
  6.   01  WENVVALOR  PIC X(100).
  7.  
  8.  PROCEDURE DIVISION.
  9.           DISPLAY "ProgramW6432" UPON ENV1
  10.           ACCEPT WENVVALOR FROM ENV2
  11.           IF WENVVALOR = SPACES
  12.              MOVE "prog32" TO wPprog  *> 32Bits
  13.           ELSE
  14.              MOVE "prog64" TO wPprog  *> 64Bits
  15.           END-IF


Kuk 3 de abril de 2020 16:41

Breew, elimina lo de SPCEIAL-NAMES y reemplaza en PROCEDURE por :

Código COBOL:
  1.           DISPLAY "ProgramW6432" UPON ENVIRONMENT-NAME
  2.           ACCEPT WENVVALOR FROM ENVIRONMENT-VALUE
  3.           IF WENVVALOR = SPACES
  4.              ...

A ver qué tal, debería cogerlo

Breew 3 de abril de 2020 21:12

Hola.

Nada , me indica error en compilacion

Código:

    JMN2503I-S  User word 'ENVIRONMENT-NAME' is undefined.
    JMN2503I-S  User word 'ENVIRONMENT-VALUE' is undefined.
    JMN2503I-S  User word 'WPPROG' is undefined.

Cita:

Citación del post de Kuk (Mensaje 5384)
Breew, elimina lo de SPCEIAL-NAMES y reemplaza en PROCEDURE por :

Código COBOL:
  1.           DISPLAY "ProgramW6432" UPON ENVIRONMENT-NAME
  2.           ACCEPT WENVVALOR FROM ENVIRONMENT-VALUE
  3.           IF WENVVALOR = SPACES
  4.              ...

A ver qué tal, debería cogerlo


Kuk 4 de abril de 2020 11:45

Breew, en este caso pasa por WinAPI : GetEnvironmentVariable function (winbase.h) - Win32 apps | Microsoft Docs

Ejemplo:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  envVarName  PIC X(50).
  5.  01  envVarValue PIC X(250).
  6.  PROCEDURE       DIVISION.
  7.  
  8.      MOVE "ProgramW6432" & X"00" TO envVarName
  9.      
  10.      CALL "GetEnvironmentVariableA" WITH STDCALL USING BY CONTENT envVarName
  11.                                                        BY REFERENCE envVarValue
  12.                                                        BY VALUE LENGTH OF envVarValue
  13.      
  14.      DISPLAY envVarValue

No olvides de añadir la directiva de compilación ALPHAL(WORD) haciendo clic botón derecho en (Script) [COBOL Script] y seleccionando "Properties".

Asimismo, añade al módulo C:\Program Files (x86)\Fujitsu NetCOBOL for Windows\KERNEL32.LIB

Breew 4 de abril de 2020 19:25

Hola Kuk.
La aplicacion donde me hace falta, utilizo unas rutinas que Rapinto puso para hacer unas busquedas en una base .mdb con ole.
Al añadir en la directiva del script compilador el ALPHAL(WORD), hay ciertas rutina que me dan error en compilacion. He echado un vistazo por encima y no entiendo el motivo.

Código:

listar-base.obj : error LNK2001: unresolved external symbol _Leer-base
listar-base.obj : error LNK2001: unresolved external symbol _abrir-base
listar-base.obj : error LNK2001: unresolved external symbol _leer-base-ventas

Si elimino el ALPHAL(WORD), vuelve a funcionar.
Para no liarlo mas, lo hare en un proyecto nuevo, y lo llamare cuando me haga falta.



He abierto un proyecto nuevo para probarlo.
Si que funciona, pero no se como lo puedo utilizar.
El problema que tengo es que el editor que intento abrir , hay maquinas que lo tienen en su version de 32 bytes y otras de 64. Concretamente serian los ejecutables de uedit32.exe y uedit64.exe.
Para capearlo, normalmente hago una llamada a los dos ( como puse en el primer mensaje ).
Supongo que en la variable envVarName deberia poner el ejecutable, pero envVarvalue sale espacios.
Como deberia hacerlo?

Gracias

Joseg 4 de abril de 2020 19:34

1 Archivos Adjunto(s)
Cita:

Citación del post de Breew (Mensaje 5392)
Hola.

Nada , me indica error en compilacion

Código:

    JMN2503I-S  User word 'ENVIRONMENT-NAME' is undefined.
    JMN2503I-S  User word 'ENVIRONMENT-VALUE' is undefined.
    JMN2503I-S  User word 'WPPROG' is undefined.


Ver exemplo, talvez seja mais fácil !!

Breew 4 de abril de 2020 22:47

Hola.

Suelto si funciona , pero al implementarlo en mi programa, en el special names, junto al decimal-point is comma, me da error.
No se si a vosotros os pasa tambien?.

En todo caso la solucion que podria hacer es una llamada al ejecutable desde la aplicacion.

Gracias

Joseg 5 de abril de 2020 00:06

Cita:

Citación del post de Breew (Mensaje 5404)
Hola.

Suelto si funciona , pero al implementarlo en mi programa, en el special names, junto al decimal-point is comma, me da error.
No se si a vosotros os pasa tambien?.

En todo caso la solucion que podria hacer es una llamada al ejecutable desde la aplicacion.

Gracias

Ponga su código aquí en particular "special names". Tiene que funcionar


La franja horaria es GMT +2. Ahora son las 20:18.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.