Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Leer dato en un archivo Json con Chilkat... Fito PowerCOBOL (ActiveX, v4 - v11) 12 7 de agosto de 2024 19:20
[Sintaxis] Leer nombre de archivo y separarlo en variables GAbo248 AcuCobol 3 26 de julio de 2020 19:27
[Sintaxis] Leer Archivo Excel jmeza Fujitsu COBOL 3 14 de febrero de 2020 01:56
[Duda] Leer archivo AcuCobol con PowerCobol Roger PowerCOBOL (ActiveX, v4 - v11) 7 28 de septiembre de 2016 10:44
[Sintaxis] Leer archivo texto con codificacion UTF-8 Recato53 PowerCOBOL (ActiveX, v4 - v11) 1 18 de abril de 2016 10:47

Respuesta
 
Herramientas

  #1
Antiguo 1 de septiembre de 2017, 16:38
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 22.09.2026 04:22
Posts Posts: 458
Likes enviados Enviados: 269
Likes recibidos Recibidos: 243
Deporte Leer archivo .ini
0 Inactivo Inactivo

Hola Amigos:

Buscando información en la web encontré este código en visual basic para leer archivos ini por medio de winapi. Es posible traducirla a Cobol?

Código VB:
  1. Option Explicit
  2.  
  3. Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  4. Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
  5.  
  6. Public Function Leer_INI(Filename As String, Key_Value As String, Key_Name As String, Optional ByVal Default As String) As String
  7.    
  8.     Dim Size As Integer
  9.     Dim Value As String
  10.  
  11.     Value = Space(255)
  12.     Size = GetPrivateProfileString(Key_Value, Key_Name, "", Value, Len(Value), Filename)
  13.  
  14.     If Size > 0 Then Leer_INI = Left$(Value, Size) Else Leer_INI = Default
  15.  
  16. End Function
  17.  
  18. Public Function Escribir_INI(Filename As String, Key_Value As String, Key_Name As String, Value As String) As Long
  19.    
  20.     Dim Size As Integer
  21.  
  22.     Size = WritePrivateProfileString(Key_Value, Key_Name, Value, Filename)
  23.  
  24. End Function

Saludos...

Fito...
Fito is offline   Responder Con Cita
  #2
Antiguo 1 de septiembre de 2017, 19:09
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

Fito,

Não seria mais prático usar uma ComboBox?
Dizes qual o nome do ficheiro a ler nas propriedades "File" da ComboBox.
A ComboBox pode ficar como "visible" = false, para ninguém ver.

Load : carrega o ficheiro
Save : guarda o ficheiro.

Não é necessário abrir o ficheiro em Cobol.

Un saludo
Rui Pinto
Rapinto is offline   Responder Con Cita
  #3
Antiguo 6 de septiembre de 2017, 23:27
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Estas lineas que mando lee un archivo . ini donde se lee los baudios y la puerta de comunicacion
Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01  PARM1      PIC X(128).
  3.  01  PARM2      PIC X(128).
  4.  01  PARM3      PIC S9(9) COMP-5.
  5.  01  PARM4      PIC X(128).
  6.  01  PARM5      PIC S9(9) COMP-5.
  7.  PROCEDURE       DIVISION.
  8.      MOVE   "Comunica"  to  PARM1       *> Application name
  9.      MOVE   "baud"          to  PARM2       *> Key Name
  10.      MOVE   2               TO  PARM3       *> Default value
  11.      MOVE   strIniFile      to  PARM4
  12.      CALL   "GetPrivateProfileIntA" WITH STDCALL LINKAGE
  13.             USING   BY REFERENCE    PARM1
  14.                                     PARM2
  15.                     BY VALUE        PARM3
  16.                     BY REFERENCE    PARM4
  17.                     RETURNING       PARM5
  18.                    
  19.      EVALUATE   PARM5
  20.             WHEN    1
  21.                     MOVE    "9600"  TO  "TEXT"  OF  CMTEXT2
  22.             WHEN    3
  23.                     move    "38400" TO  "TEXT"  OF  CMTEXT2
  24.             WHEN    OTHER
  25.                     MOVE    "19200" TO  "TEXT"  OF  CMTEXT2
  26.      END-EVALUATE
  27.  
  28.      MOVE   "Comunica"  to  PARM1       *> Application name
  29.      MOVE   "puerta"            to  PARM2       *> Key Name
  30.      MOVE   1               TO  PARM3       *> Default value
  31.      MOVE   strIniFile      to  PARM4
  32.      CALL   "GetPrivateProfileIntA" WITH STDCALL LINKAGE
  33.             USING   BY REFERENCE    PARM1
  34.                                     PARM2
  35.                     BY VALUE        PARM3
  36.                     BY REFERENCE    PARM4
  37.                     RETURNING       PARM5
  38.                    
  39.      MOVE   PARM5   TO      "TEXT"  OF  CMTEXT1.
fastpho is offline   Responder Con Cita
  #4
Antiguo 5 de julio de 2023, 21:22
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 22.09.2026 04:22
Posts Posts: 458
Likes enviados Enviados: 269
Likes recibidos Recibidos: 243

Hola @fastpho,

Intenté hacer esto y no pude hacerlo andar

Saludos...

Fito...
Fito is offline   Responder Con Cita
  #5
Antiguo 6 de julio de 2023, 05:59
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Hola @Fito
Proba con este ejemplo es de lectura de enteros y de string de un archivo que se llama ftp.ini
Saludos...
Archivos Adjuntos
Tipo de Archivo: zip LeerIni.zip (5,9 KB)Descargas: 47
fastpho is offline   Responder Con Cita
  #6
Antiguo 10 de julio de 2023, 04:45
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 22.09.2026 04:22
Posts Posts: 458
Likes enviados Enviados: 269
Likes recibidos Recibidos: 243

Hola Amigos:

Te comento @fastpho, que yo estaba haciendo lo mismo que vos, pero con una pequeña diferencia.

Así funciona:
Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  
  3.  01  INI-Seccion            pic x(7)   value "GENERAL".
  4.  01  INI-Clave              pic x(7)   value "EMPRESA".
  5.  01  INI-Default            pic x(128) value "valor por defecto".
  6.  01  INI-Valor              pic x(128) value spaces.
  7.  01  INI-Size               pic s9(9) comp-5 value 128.
  8.  01  INI-Archivo            pic x(128) value "d:pruebaconfig.ini" & X"00".

Así no:

Código COBOL:
  1.  01  Variables-INI.
  2.      02  INI-Seccion            pic x(7)   value "GENERAL".
  3.      02  INI-Clave              pic x(7)   value "EMPRESA".
  4.      02  INI-Default            pic x(128) value "valor por defecto".
  5.      02  INI-Valor              pic x(128) value spaces.
  6.      02  INI-Size               pic s9(9) comp-5 value 128.
  7.      02  INI-Archivo            pic x(128) value "d:pruebaconfig.ini" & X"00".

Los campos tienen que ser nivel 01.

Cada vez entiendo menos de esto....

Saludos...

Fito...
Fito is offline   Responder Con Cita
  #7
Antiguo 10 de julio de 2023, 14:39
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Hola @Fito , los campos se pueden trabajar con nivel 01 o 77 pasando las varialbles por
Código:
REFERENCE
Si vas a trabajar con el nivel 01 subdivido tenes pasar las variables por
Código:
CONTENT
Ejemplo de Escritura con subdivisiones
Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01 FileName        PIC X(24)   VALUE "C:FSC5WORKFTP.INI" & X"00".  
  3.  01 Variables-INI.
  4.     02  PARM1     PIC X(6).         *> Application name
  5.     02  PARM2     PIC X(5).         *> Key Name
  6.     02  PARM3     PIC X(128).       *> Value Write
  7.     02  PARM4     PIC X(128).       *> FileName INi.  
  8.     02  PARM5     PIC S9(9) COMP-5.
  9.  
  10.  PROCEDURE       DIVISION.
  11.      
  12.          
  13.      MOVE   "Config"            TO  PARM1       *> Application name
  14.      MOVE   "Clave"                 TO  PARM2       *> Key Name
  15.      MOVE   "Fito 500 " & X"00" TO  PARM3       *> Value Write
  16.      MOVE   FileName        TO  PARM4            *> FileName INi
  17.      CALL   "WritePrivateProfileStringA"    WITH STDCALL LINKAGE
  18.             USING   BY CONTENT  PARM1  
  19.                 BY CONTENT  PARM2  
  20.                 BY CONTENT  PARM3  
  21.             BY CONTENT  PARM4  
  22.                     RETURNING   PARM5.

Saludos...
fastpho is offline   Responder Con Cita
  #8
Antiguo 10 de julio de 2023, 14:55
Kuk
Administrador
Última Actividad 21.09.2026 18:24
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@fastpho, el nivel del campo no tiene nada que ver con CONTENT o REFERENCE, estos son el modo de pasar los parámetros:
  • CONTENT - es una copia del parámetro, de modo que si el llamado modifica algo, en el llamante no va a tener impacto/cambio
  • REFERENCE - es pasar el puntero, dándole acceso al llamado a la misma sección de memoria que ha reservado el llamante, de modo que el llamado puede modificar algo y el llamante lo verá también



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:35.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.