0

![]() |
![]() |
Junior |
Hola a todos, sera posible leer un archivo cobol desde una aplicación vb6 el archivo cobol es asi
esta en power v3 en una aplicacion que hice hace un tiempo.
COBOL Código:
000001 FD ARTICULO GLOBAL EXTERNAL. 000002 01 REG-ARTICULO. 000003 02 ART-CLAVE-PRIN. 000004 05 ARTCODIGO PIC 9(5). 000005 02 ART-CLAVE-BARRA. 000006 05 ARTBARRA PIC 9(13). 000007 02 ART-CLAVE-NOMBRE. 000008 05 ARTNOMBRE PIC X(35). 000009 02 ARTTPV PIC X(20). 000010 02 ARTIVA PIC 9(4). 000011 02 ART-CLAVE-PROVEEDOR. 000012 05 ARTPROVEEDOR PIC 9(5). 000013 02 ART-CLAVE-RUBRO. 000014 05 ARTRUBRO PIC 9(3). 000015 02 ARTENVASE PIC 9(5). 000016 02 ARTCOSTO PIC 9(7)V99. 000017 02 ARTMINORISTA PIC 9(7)V99. 000018 02 ARTMAYORISTA PIC 9(7)V99. 000019 02 ARTDESCUENTO PIC 9(2). 000020 02 ARTCANTIDAD PIC 9(2). 000021 02 ARTMINIMO PIC 9(4). 000022 02 ARTGANANCIA1 PIC 9(2). 000023 02 ARTGANANCIA2 PIC 9(2). 000024 02 ARTSTOCK OCCURS 4 PIC S9(6)V99. 000025 02 ARTVENDIDO OCCURS 31 PIC S9(7)V99. 000026 02 ARTCANTIDADVEND PIC 9(6)V99. 000027 02 ARTCOMPRA PIC 9(6). 000028 02 ARTFOTOGRAFIA PIC X(128).
Solo quiero buscar por ARTBARRA y que me devuelva el ARTMINORISTA no lo puedo hacer en cobol porque usa el puerto serie y en power nunca pude usar un ocx que funcione como quiero, alguna pista de como lo puedo hacer .
Muchas gracias Saludos
---------- Post añadido : 00:51 ---------- Post anterior : 00:49 ----------COBOL Código:
000001 SELECT ARTICULO ASSIGN TO "E:\FSC\ARCHIVOS\ARARTIC.DAT" 000002 ORGANIZATION INDEXED 000003 ACCESS DYNAMIC 000004 RECORD KEY IS ART-CLAVE-PRIN 000005 ALTERNATE RECORD IS ART-CLAVE-BARRA 000006 ALTERNATE RECORD IS ART-CLAVE-NOMBRE WITH DUPLICATES 000007 ALTERNATE RECORD IS ART-CLAVE-PROVEEDOR WITH DUPLICATES 000008 ALTERNATE RECORD IS ART-CLAVE-RUBRO WITH DUPLICATES 000009 FILE STATUS ART-STATUS.
![]() |
![]() |
Gran amigo y Guru de COBOL |
Para testar, precisava dum exemplo do ficheiro com alguns dados.
Posso tentar fazer em PowerCobol 9 uma DLL para utilizar em VB6.
Sem o ficheiro, não consigo fazer nada.
Un saludo,
Rui Pinto
![]() |
![]() |
Administrador |
@drvedia1981, puedes crear un programa "normal", es decir en modo Batch sin GUI, y compilarlo vía línea de comandos con el compilador que viene con el PowerCOBOL V3L10 y linkearlo a una DLL.
Tendrás que mirar las opciones, pero no es nada complicado.
Mira crea un programa cualquiera con un DISPLAY y complílalo con este script CMD/BAT:
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Junior |
Hola Kuk gracias por la ayuda , no entiendo como seria, yo creo un programa sin GUI y lo compilo con el script y eso que me genera una .dll ? después esa dll la uso en vb ? como le pasaría parámetros ?
Saludos
---------- Post añadido : 20:18 ---------- Post anterior : 20:11 ----------
Hola Rapinto te dejo el link del archivo cobol
Saludos gracias
MEGA
---------- Post añadido : 20:25 ---------- Post anterior : 20:18 ----------
Link definicion del archivo
MEGA
![]() |
![]() |
Administrador |
@drvedia1981, eso es. Los parámetros los defines en LINKAGE de tu programa COBOL. Para importar una DLL en VB hay un montón de ejemplos en Google, sería como una DLL cualquiera.
Para la opción de hacer LINK en una DLL es la opción
Para la lista completa del LINK mira aquí: Linker Options
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Junior |
Hola Kuk
Arme esto y con el script que me dijiste me genero un .exe para generar la dll como seria, esta bien el codigo como lo ves Gracias SaludosCOBOL Código:
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. DLL. 000030 ENVIRONMENT DIVISION. 000031 CONFIGURATION SECTION. 000042 000043 INPUT-OUTPUT SECTION. 000044 FILE-CONTROL. 000055 SELECT ARTICULO ASSIGN TO "C:\FSC\ARCHIVOS\ARARTIC.DAT" 000056 ORGANIZATION INDEXED 000057 ACCESS DYNAMIC 000058 RECORD KEY IS ART-CLAVE-PRIN 000059 ALTERNATE RECORD IS ART-CLAVE-BARRA 000060 ALTERNATE RECORD IS ART-CLAVE-NOMBRE WITH DUPLICATES 000061 ALTERNATE RECORD IS ART-CLAVE-PROVEEDOR WITH DUPLICATES 000062 ALTERNATE RECORD IS ART-CLAVE-RUBRO WITH DUPLICATES 000063 FILE STATUS ART-STATUS. 000064 000065 DATA DIVISION. 000066 FILE SECTION. 000067 FD ARTICULO GLOBAL EXTERNAL. 000068 01 REG-ARTICULO. 000069 02 ART-CLAVE-PRIN. 000070 05 ARTCODIGO PIC 9(5). 000071 02 ART-CLAVE-BARRA. 000072 05 ARTBARRA PIC 9(13). 000073 02 ART-CLAVE-NOMBRE. 000074 05 ARTNOMBRE PIC X(35). 000075 02 ARTTPV PIC X(20). 000076 02 ARTIVA PIC 9(4). 000077 02 ART-CLAVE-PROVEEDOR. 000078 05 ARTPROVEEDOR PIC 9(5). 000079 02 ART-CLAVE-RUBRO. 000080 05 ARTRUBRO PIC 9(3). 000081 02 ARTENVASE PIC 9(5). 000082 02 ARTCOSTO PIC 9(7)V99. 000083 02 ARTMINORISTA PIC 9(7)V99. 000084 02 ARTMAYORISTA PIC 9(7)V99. 000085 02 ARTDESCUENTO PIC 9(2). 000086 02 ARTCANTIDAD PIC 9(2). 000087 02 ARTMINIMO PIC 9(4). 000088 02 ARTGANANCIA1 PIC 9(2). 000089 02 ARTGANANCIA2 PIC 9(2). 000090 02 ARTSTOCK OCCURS 4 PIC S9(6)V99. 000091 02 ARTVENDIDO OCCURS 31 PIC S9(7)V99. 000092 02 ARTCANTIDADVEND PIC 9(6)V99. 000093 02 ARTCOMPRA PIC 9(6). 000094 02 ARTFOTOGRAFIA PIC X(128). 000098 WORKING-STORAGE SECTION. 000100 01 ART-STATUS PIC 9(2). 000104 LINKAGE SECTION. 000105 01 DATA1 PIC X(13). 000106 01 DATA2 PIC S9(14)V9(4) COMP-5. 000117 000118 PROCEDURE DIVISION WITH STDCALL LINKAGE USING DATA1 DATA2 . 000121 OPEN INPUT ARTICULO 000128 MOVE DATA1 TO ARTBARRA. 000130 READ ARTICULO KEY IS ART-CLAVE-BARRA. 000147 MOVE ARTMINORISTA TO DATA2 000153 CLOSE ARTICULO 000154 000157 EXIT PROGRAM.
![]() |
![]() |
Administrador |
@drvedia1981, para la DLL tiene que ser:CODE Código:
Para llamar el programa desde el VB, es el nombre de la con el prefijo de guion bajo. Es decir, si tu es , desde VB debes llamar a
Desde VB debes declarar la función de la siguiente manera:VB Código:
Declare Function PROGRAMA Lib "PROGRAMA.DLL" Alias "_PROGRAMA@8" (ByRef DATA1 As String, ByRef DATA2 As Long) As Integer
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Junior |
Muchas gracias Kuk voy a probar Saludos !!!!
Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)
Marcadores