Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Llamada a programas externos con rutas diferentes (https://www.cobolforo.es/showthread.php?t=1835)

orlando 18 de enero de 2025 22:45

Llamada a programas externos con rutas diferentes
 
1 Archivos Adjunto(s)
buena tarde

Alguien me da una mano tengo programas win10 que llaman a paint y excel ..pero
por ejemplo en paint seria cambia ruta y compilarlo con ruta de el usuario ej pepe ver archivo p

Código:

c:\users\pepe\AppData\Local\mspaint.exe D:\odog\0000000000001.bmp
pero

esto me llevaria a compilar por cada usuario....no se si alguien ya lo ha hecho .......pero
con una sola ruta...para dejar algo general y ahorrar trabajo-.............

por otro lado

tengo excel ver archivos e y e1.....pero no se como seria.....
pero ,,,no se dejaron subir solo archivo p
muy amables recibo ideas

Kuk 19 de enero de 2025 02:09

@orlando, para qué indicas la ruta completa?

Estos programas siempre están en la variable de entorno PATH. Por consiguiente, no necesitas indicar la ruta, solo el nombre del programa.

---------- Post added at 02:09 ---------- Previous post was at 02:07 ----------

A las malas, podrías configurar un fichero plano que se lee por tu programa, donde en cada cliente indicarías la ruta, y ya está.

No sé para qué te complicas tanto ;)

orlando 19 de enero de 2025 13:58

llamadas a programas externos con rutas diferentes
 
4 Archivos Adjunto(s)
cordial saludo

el problema es que cuando ejecuto el programa en win 11 no funciona pero en win 10 si.....es por eso que de pronto

si tu o alguien me pudiera indicar ....que hacer ....envio 2 archivos de los errores en win 11
er1 y er2 y e y e1....que me faltaron en el post
pues por alguna razon no me permitio hacerlo

muy amable por su colaboracion

Kuk 19 de enero de 2025 18:47

@orlando, ya te he respondido en mi post anterior, intenta llamar Excel y Paint sin ruta completa, solo por el nombre del EXE.

Si sigue sin funcionar (cosa que me extrañaría), crea un fichero nuevo de texto, y léelo cuando arranca tu programa, así tendrás la ruta de cada programa que te interesa en cada cliente, sin necesidad de recompilar el programa.
Meter parámetros en ficheros es lo típico, por qué no hacerlo también con tu problema.

Pruébalo y nos cuentas.

JCantero 19 de enero de 2025 19:48

@orlando, prueba con esto.

Yo siempre lo hago asi. Usando start que ve la información en el registro y es independiente de la version de windows


para paint --> start mspaint.exe

para excel --> start excel


en tu caso:
Código:

start mspaint.exe D:\odog\0000000000001.bmp

orlando 19 de enero de 2025 20:11

cordial saludo

ok lo hare con el start y les comento

muy amable por tu ayuda

Kuk 20 de enero de 2025 00:23

@orlando, también tienes esta opción, que abrira cualquier fichero con su programa asociado en el SO: Abrir documento Word - COBOL Foro

orlando 20 de enero de 2025 01:17

4 Archivos Adjunto(s)
cordial saludo

intente con lo que me dice amigo jcantero....

en paint

me dice que falta como una declaracion ...no conozco bien la syntaxis
por lo cual le solicito una mano..
anexo 2 archivos intepaint y errorintepaint

ahora bien en excel
la verdad en esto me ayudo hace mucho tiempo...... el, amigo ROGER (Dios lo guarde) se definio un archivo de excel y se utilizo unas variables globales...
y hay unas funciones de movimiento en celdas conformando el archivo estas imagino quedarian y todo lo del archivo excel lo
descartaria anexo 2 archivos de principio y final de programa itexnicio y intexfin
a ver como podrian ayudar
muy amable toda su colaboracion
@JCantero,

Kuk 20 de enero de 2025 09:40

@orlando, no peques fotos amigo, pega el código para que podamos leerlo bien. En las fotos no se ve nada.

Lo del START tienes que hacerlo así:

Código COBOL:
  1.      INVOKE POW-SELF "Execute" USING "start mspaint.exe D:\odog\0000000000001.bmp"

Lo mismo con lo que te he pasado yo:

Código COBOL:
  1.      INVOKE POW-SELF "Execute" USING 'rundll32 url.dll,FileProtocolHandler "D:\odog\0000000000001.bmp"'

orlando 20 de enero de 2025 21:34

cordial saludo

para el caso de paint ya ensaye con invoke...mspaint no funciona

genera error de invalid calling of the method---
...aclaro para WIN 10 SI FUNCIONA
PARA WIN 11 NO ..
envio texto
Código COBOL:
  1. *****modulo creacion*****
  2.  
  3. ENVIRONMENT     DIVISION.
  4.  DATA            DIVISION.
  5.  WORKING-STORAGE SECTION.
  6. *estaba 01 RUTA PIC X(300) VALUE "C:\Windows\System32\MSPAINT.EXE D:\odog\0000000000000000000000001.bmp".
  7. * 01 RUTA1 PIC X(300) VALUE "C:\WINDOWS\SYSTEM32\COMMAND.COM /C  DEL D:\A-B-M\PRUEBA.TXT".
  8.  PROCEDURE      DIVISION.
  9. *estaba       INVOKE POW-SELF "EXECUTE" USING RUTA.
  10.  INICIO.
  11.        INVOKE POW-SELF "EXECUTE" USING
  12.               "start mspaint.exe D:\odog\0000000000000000000000001.bmp"
  13.        INVOKE CMCOMMAND6 "SETFOCUS".
  14.  ..
  15.  
  16. ...................................................
  17.  
  18. ******modulo consulta*****
  19.  ENVIRONMENT     DIVISION.
  20.  DATA            DIVISION.
  21.  WORKING-STORAGE SECTION.
  22.  01 COMPLETA GLOBAL EXTERNAL.
  23.     02 CON-Z        PIC 99.
  24.     02 C-Z          PIC 9(12).
  25.     02 NOM-Z        PIC X(40).
  26.     02 CON-OZ       PIC 99.
  27.     02 IF-OZ        PIC 9.
  28.     02 ANO          PIC 9999.
  29.     02 MESO         PIC 99.
  30.     02 DIAO         PIC 99.
  31.  01 SW99 GLOBAL EXTERNAL.
  32.     02 SWNN         PIC 9.  
  33.  01 RUTABUSCA.
  34. *estaba    02 FILLER       PIC X(40)  VALUE "C:\Windows\System32\MSPAINT.EXE D:\odog".
  35.     02 COD-P-N         PIC 9(12).
  36.     02 CONSECUTIVO-N   PIC 99.
  37.     02 CONSE-ON        PIC 99.
  38.     02 IF-ON           PIC 9.
  39.     02 ANO-ON          PIC 9999.
  40.     02 MES-ON          PIC 99.
  41.     02 DIA-ON          PIC 99.
  42.     02 FILLER          PIC X  VALUE ".".
  43.     02 FILLER          PIC XXX VALUE "bmp".
  44. * 01 RUTA1 PIC X(300) VALUE "C:\WINDOWS\SYSTEM32\COMMAND.COM /C  DEL D:\A-B-M\PRUEBA.TXT".
  45.  PROCEDURE      DIVISION.
  46.       IF SWNN = 0
  47.          MOVE ZEROS TO  COD-P-N  CONSECUTIVO-N  CONSE-ON IF-ON
  48.                              ANO-ON MES-ON  DIA-ON
  49.         MOVE C-Z TO COD-P-N
  50.         MOVE CON-Z TO CONSECUTIVO-N
  51.         MOVE CON-OZ TO CONSE-ON
  52.         MOVE IF-OZ TO IF-ON
  53.         MOVE ANO TO ANO-ON
  54.         MOVE MESO TO MES-ON
  55.         MOVE DIAO TO DIA-ON
  56. *estaba                INVOKE POW-SELF "EXECUTE" USING RUTABUSCA.
  57.         INVOKE POW-SELF "EXECUTE" USING "start mspaint.exe D:\odog\RUTABUSCA"
  58.                MOVE 1 TO SWNN
  59.                IF SWNN = 1
  60.                 INVOKE CMCOMMAND6  "SETFOCUS".

ACLARO * estaba era win 10 win 11 ....No funciona


para el caso de paint el rundll32.....no he probado....

ahora bien

para el caso EXCEL...ENVIO TEXTO ...COMO FUNCIONA WIN 10...
Podrias ayudarme para win 11...

envio texto

Código COBOL:
  1. ENVIRONMENT DIVISION.
  2.  INPUT-OUTPUT SECTION.
  3.  FILE-CONTROL.
  4.      SELECT LEXCEL
  5.      ASSIGN TO "D:\EXCEL1\LPACIENTES.XLS"
  6.      ORGANIZATION IS LINE SEQUENTIAL.
  7.  DATA DIVISION.
  8.  FILE SECTION.
  9.   FD LEXCEL
  10.      LABEL RECORD IS STANDARD.
  11.  01 REC-LEXCEL PIC X(700).
  12.  WORKING-STORAGE SECTION.
  13.  01 EXCEL OBJECT REFERENCE COM IS GLOBAL.
  14.  01 WORKBOOK OBJECT REFERENCE COM IS GLOBAL.
  15.  01 COM-TRUE PIC 1(1) BIT VALUE B"1" IS GLOBAL.
  16.  01 APPLICATION PIC X(20) VALUE "EXCEL.APPLICATION" IS GLOBAL.
  17.  01 EXCEL_FILE PIC X(35) VALUE "D:\EXCEL1\LPACIENTES.XLS".
  18.  01     FECHA.
  19.     02   DIA          PIC 99.
  20.     02   FILLER       PIC X VALUE "/".
  21.     02   MES          PIC 99.
  22.     02   FILLER       PIC X VALUE "/".
  23.     02   ANO          PIC 9999.
  24.  01    FECHAD.
  25.     02 ANOD           PIC 99.
  26.     02 MESD           PIC 99.
  27.     02 DIAD           PIC 99.
  28.  
  29.  01     ANODD        PIC 9999 VALUE ZEROS.
  30.  01     ERRORA       PIC 9.
  31.  01     FALLO        PIC 9.
  32. * 01 FECHA.
  33. *    02 DIA PIC 99.
  34. *    02 FILLER PIC X VALUE "/".
  35. *    02 MES PIC 99.
  36. *    02 FILLER PIC X VALUE "/".
  37. *    02 FILLER PIC XX VALUE "20".
  38. *    02 ANO PIC 99.
  39.  01 FIN-A PIC 9.
  40.  01 FIN-AA PIC 9.  
  41.  01 FEC.
  42.     02 AA PIC 99.
  43.     02 MM PIC 99.
  44.     02 DD PIC 99.    
  45.  01 L0.
  46.     02 PIC X(85) VALUE
  47.       "<HTLM><HEAD><TITLE>ABONOS  DEL MES DE SEP.2018</TITLE></HEAD>".
  48.  01 L-1.
  49.     02 PIC X(6) VALUE "<BODY>".
  50.     02 PIC X(15) VALUE "<TR><TH><B> ".
  51.     02 L1-CIA PIC X(60) VALUE
  52.        "CONSULTORIO ODONTOLOGICO ".
  53.     02 PIC X(6) VALUE "<\B>".
  54.  01 L-11.
  55.     02 PIC X(15) VALUE "<TR><TH>".
  56.     02 PIC X(55) VALUE
  57.         "LISTA DE PACIENTES :".
  58.     02 FECHA-II PIC X(10).          
  59.  01 L-30.
  60.     02 PIC X(7) VALUE "<TABLE>".
  61.  01 L-2.
  62.     02 PIC X(4) VALUE "<BR>".
  63.     02 L2-CIA PIC X(112) VALUE SPACES.
  64.     02 L3-MES PIC X(10).
  65.     02 L3-RMES REDEFINES L3-MES.
  66.      03 L3-DMES PIC BXXX.
  67.      03 L3-LET PIC XXX.
  68.      03 L3-HMES PIC XXX.
  69.     02 L3-ANO PIC Z9999.
  70.  01 GRUPO.
  71.    02 G1 PIC 999.
  72.    02 G2 PIC X(17).  
  73.  01 L-3.
  74.     02 PIC X(4) VALUE "<BR>".
  75.     02 L3-CIA PIC X(32).
  76.     02 PIC X(7) VALUE " ".
  77.     02 L2-RFC PIC X(15) VALUE SPACES.
  78.  01 LLL.
  79.     02 PIC X(7) VALUE "<BR><U>".
  80.     02 L-0 PIC X(163) VALUE SPACES.
  81.  01 L-4.
  82.     02 PIC X(30) VALUE "<TR><TH><U>  PACIENTE  ".
  83.     02 PIC X(30) VALUE "<TH><U>      TELEFONO  ".
  84.     02 PIC X(30) VALUE "<TH><U>      C.C o T.I ".
  85.  01 L-5.
  86.     02 PIC X(15) VALUE "<TR><TH> ".
  87.     02 PACIENTE-I PIC X(30) VALUE "  ".
  88.     02 PIC X(4) VALUE "<TD>".
  89.     02 TELEFONO-I PIC X(14).
  90.     02 PIC X(4) VALUE "<TD>".
  91.     02 IDENTIDAD-I PIC X(14).
  92.  
  93. * 01 CAMINO.
  94. * **   02 CAM1 PIC X(40) VALUE "D:\EXCEL.EXE BALANZA.XLS".
  95.  01 ANO-X.
  96.     02 AA-N PIC 99.
  97.     02 BB-N PIC 99.
  98.  01 X-ANO REDEFINES ANO-X PIC 9(4).
  99.  01 TIPO PIC X.
  100.  01 CIA PIC X(15).
  101.  01 A1 PIC 99 VALUE 0.
  102.  01 K PIC 99 VALUE 0.
  103. *
  104.  01 SW PIC 9.  
  105.  01 CADENA PIC X(8).
  106.  01 RUTA PIC X(256).
  107.  01 REDD GLOBAL EXTERNAL.
  108.    02 RED PIC X(256).
  109.  PROCEDURE      DIVISION.
  110.  INICIO.  
  111.        OPEN OUTPUT LEXCEL CLOSE LEXCEL.
  112.        OPEN EXTEND LEXCEL.
  113.  RECIBE-FEC-ACTUAL.
  114.        MOVE ZEROS  TO DIA MES ANO DIAD MESD ANOD ANODD
  115.         ACCEPT FECHAD
  116.         FROM DATE
  117.         MOVE DIAD TO DIA
  118.         MOVE MESD TO MES
  119.         IF
  120.           ANOD > 90
  121.           COMPUTE ANODD = 1900 + ANOD
  122.           MOVE ANODD TO ANO
  123.          ELSE
  124.           COMPUTE ANODD = 2000 + ANOD
  125.           MOVE ANODD TO ANO.
  126. ** *      MOVE AA TO ANO.
  127. *      MOVE MM TO MES.
  128.       MOVE FECHA TO FECHA-II.
  129.       INSPECT L-0 REPLACING CHARACTERS BY " ".
  130.       INSPECT L0 REPLACING ALL " " BY " ".
  131.       INSPECT L-1 REPLACING ALL " " BY " ".
  132.       INSPECT L-11 REPLACING ALL " " BY " ".
  133.       INSPECT L-2 REPLACING ALL " " BY " ".
  134.       INSPECT L-3 REPLACING ALL " " BY " ".
  135. *      INSPECT L-30 REPLACING ALL " " BY " ".
  136.       INSPECT L-4 REPLACING ALL " " BY " ".
  137.       WRITE REC-LEXCEL FROM L0.
  138.       WRITE REC-LEXCEL FROM L-1.
  139.       WRITE REC-LEXCEL FROM L-3.
  140.       WRITE REC-LEXCEL FROM L-11.
  141. *      WRITE REC-LEXCEL FROM L-2.
  142.       WRITE REC-LEXCEL FROM L-3.
  143.       INSPECT L-0 REPLACING CHARACTERS BY " ".
  144.       WRITE REC-LEXCEL FROM LLL.
  145.       WRITE REC-LEXCEL FROM L-30.
  146. *                   MOVE ANO TO ANO-A
  147. *                   MOVE MES TO MES-A
  148. *                   MOVE 0  TO DIA-A.
  149. *      WRITE REC-LEXCEL FROM L-4.
  150. *      WRITE REC-LEXCEL FROM L55.
  151. * INICIO.
  152. *      MOVE SPACES TO RUTA.
  153. *      STRING RED DELIMITED BY SPACES
  154. *            "Artic.DAT" DELIMITED BY SIZE
  155. *            INTO RUTA.
  156. *      MOVE RUTA TO WF-ARTIC.
  157. * PUSE DESDE ACA
  158.  ABRIR-A.
  159. *       OPEN INPUT ABONO.
  160.        OPEN INPUT PACIENTE-A.
  161.  PRINCIPAL.
  162.        MOVE 0 TO FIN-A FIN-AA SW
  163.        MOVE "A"  TO  NOMBRE-P
  164.        MOVE ALL ZEROS TO CODIGOP-KEY  
  165.        PERFORM START-P
  166.         IF FALLO = 1
  167.               STOP RUN
  168.         ELSE
  169.          WRITE REC-LEXCEL FROM L-4
  170.          MOVE COD-P TO COD-A.
  171. *         PERFORM PROCESAR UNTIL FIN-A = 1.
  172. *         GO TO FIN.  
  173. *
  174.  PROCESAR.
  175.          PERFORM LEER-P
  176.          IF FIN-A = 1
  177.                 GO FIN
  178.           ELSE
  179.          MOVE NOMBRE-P TO PACIENTE-I
  180.          MOVE  TEL1-P TO TELEFONO-I
  181.          MOVE COD-P    TO IDENTIDAD-I
  182.          WRITE REC-LEXCEL FROM L-5
  183.          GO PROCESAR.
  184.  LEER-P.
  185.      MOVE 0 TO FIN-A
  186.      READ PACIENTE-A
  187.      NEXT RECORD AT END
  188.      MOVE 1 TO FIN-A.
  189.  
  190.  START-P.
  191.           MOVE 0  TO FALLO
  192.           START PACIENTE-A KEY NOT LESS NOMBRE-P
  193.            INVALID KEY
  194.           MOVE 1 TO FALLO.  
  195. *
  196.  FIN.  
  197. *      CLOSE ABONO.
  198.       CLOSE PACIENTE-A.
  199.       CLOSE LEXCEL.
  200.       INVOKE COM "CREATE-OBJECT" USING APPLICATION RETURNING EXCEL.
  201.       INVOKE EXCEL "SET-VISIBLE" USING COM-TRUE.
  202.       INVOKE EXCEL "GET-WORKBOOKS" RETURNING WORKBOOK.
  203.       INVOKE WORKBOOK "Open" using EXCEL_FILE.  
  204.       EXIT PROGRAM.


La franja horaria es GMT +2. Ahora son las 00:16.

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