Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Pasar parametros por linea de Comandos (https://www.cobolforo.es/showthread.php?t=131)

Joseg 8 de mayo de 2015 15:40

Pasar parametros por linea de Comandos
 
Hola

Queria que um determinado EXE chamase um programa em Powercobol desta forma:

Código:

c:\myprogPWC.exe var1="AAAAA" var2="BBBBBB"
Como fazer isto de forma a conseguir ler o conteudo de "var1" e "var2" ?


Gracias por qualquer ajuda
Jose Gomes

Kuk 8 de mayo de 2015 16:00

Joseg, en el vento "Opened" metes esto:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  WS-CMD      PIC X(260).
  5.  PROCEDURE       DIVISION.
  6.      
  7.      MOVE "CommandLine" OF POW-SELF TO WS-CMD

Luego analizas el contenido de WS-CMD ;)

Joseg 8 de mayo de 2015 17:39

Gracias :)

Vou analisar.

Jose Gomes

Rapinto 8 de mayo de 2015 17:44

JoseG

Se utilizar NETCOBOL deverá utilizar o seguinte código:

Código COBOL:
  1.  @OPTIONS NOALPHA                                                
  2. *****************************************************************
  3. *  Copyright (c) 2014 RPS Software.                              
  4. *  Created      :    Out 2014                                    
  5. *  Last Modified:    Out 2014                                    
  6. *****************************************************************
  7.  IDENTIFICATION DIVISION.                                        
  8.  PROGRAM-ID.    RPSFTSPROLIDER.                                  
  9.  AUTHOR.        Rui Pinto.                                        
  10. *-----------------------------------------------------------------
  11.  ENVIRONMENT DIVISION.                                            
  12.  CONFIGURATION SECTION.                                          
  13.  SPECIAL-NAMES.                                                                                              
  14.       ARGUMENT-NUMBER IS ARGNUMBER                                                                          
  15.       ARGUMENT-VALUE  IS ARGVALUE.                                                                          
  16.  INPUT-OUTPUT SECTION.                                                                                      
  17.  FILE-CONTROL.                                                                                              
  18. *-----------------------------------------------------------------                                          
  19.  DATA DIVISION.                                                                                              
  20.  FILE SECTION.                                                                                              
  21. *-----------------------------------------------------------------                                          
  22.  WORKING-STORAGE SECTION.                                                                                    
  23.  01 DLLNAME      PIC X(260) VALUE "RPSFtsProlider.dll".
  24.  01 FORMNAME     PIC X(14)  VALUE "FrmFtsProlider".
  25.  01  CODEMP         GLOBAL EXTERNAL        PIC X(005).                                                      
  26.  01  ACCPATHFICH    GLOBAL EXTERNAL        PIC X(128).                                                      
  27.  01  ACCPATHFICHEMP GLOBAL EXTERNAL        PIC X(128).                                                      
  28. *                                                                                                            
  29.  01  MsgTITLE              PIC X(32)      VALUE "R.P.S.  -  Faturação         ".                            
  30.  01  MsgBody               PIC X(300).                                                                      
  31.  01  RETCODE               PIC S9(9) COMP-5 VALUE ZERO.                                                      
  32. *                                                                                                            
  33.  PROCEDURE DIVISION.                                                                                        
  34.  MAIN SECTION.                                                                                              
  35.  MAIN-00.                                                                                                    
  36.      INITIALIZE CODEMP ACCPATHFICH ACCPATHFICHEMP.
  37.      DISPLAY 1 UPON ARGNUMBER.                                                                              
  38.      ACCEPT CODEMP      FROM ARGVALUE.                                                                      
  39.      DISPLAY 2 UPON ARGNUMBER.                                                                              
  40.      ACCEPT ACCPATHFICH FROM ARGVALUE.                                                                      
  41.      DISPLAY 3 UPON ARGNUMBER.                                                                              
  42.      ACCEPT ACCPATHFICHEMP FROM ARGVALUE.                                                                    
  43.      IF CODEMP = SPACE                                                                                      
  44.         IF ACCPATHFICH = SPACE                                                                              
  45.             IF ACCPATHFICHEMP = SPACE                                                                        
  46.                MOVE "ERRO: Utilize : Prog.exe Cod_Empresa Path_Ficheiros_Base Path_Ficheiros_Empresa."      
  47.                         TO MsgBody                                                                          
  48.                GO TO MAIN-80.                                                                                
  49. ***********
  50. ***********    restante codigo aqui
  51. ***********
  52.  MAIN-80.                                                            
  53.      MOVE  LOW-VALUE                    TO  MsgTITLE(32:1)            
  54.      MOVE  LOW-VALUE                    TO  MsgBody(128:1)            
  55.      CALL "MessageBoxA"        *> Message box system function        
  56.           WITH STDCALL             *> STDCALL call                    
  57.           USING                                                      
  58.              BY VALUE     0          *> Handle (The value is made "0")
  59.              BY REFERENCE MsgBody    *> Message text                  
  60.              BY REFERENCE MsgTITLE   *> Message box title            
  61.              BY VALUE     32          *> Type of message box (0-5)    
  62.             RETURNING     RETCODE.   *> Return value                  
  63.       GO TO MAIN-95.                                                  
  64.  MAIN-90.                                                            
  65. ************    aqui pode chamar uma DLL do PowerCobol e respetiva FORM
  66. *
  67.      CALL "POWEROPENSHEET" USING DLLNAME FORMNAME.
  68. *
  69.  MAIN-99.                          
  70.  END PROGRAM RPSFTSPROLIDER.  

Cria um EXE muito pequeno e pode chamar em seguida as FORMS do PowerCobol.

Um abraço,
Rui Pinto

Joseg 9 de mayo de 2015 12:02

Obrigado :)

É isto mesmo !!!

Abraço.

Recato53 19 de abril de 2016 12:56

Desde una dll, consigo pasar una variable a un programa Exe.

Ahora lo que necesito es que desde el programa Exe, devuelva otra variable y la pueda consultar desde la dll.

Un saludo.

Rapinto 19 de abril de 2016 22:07

Recato53,
Porque não usas uma variável "global external" no EXE e na DLL?
Penso que te resolve o problema.
Un saludo,
Rui Pinto


La franja horaria es GMT +2. Ahora son las 22:12.

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