Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol COBOL - General
COBOL - General Discusiones de temática general sobre el lenguaje COBOL y todo lo relacionado con él.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Compilador] Error 61 al abrir fichero en 2 programas a la vez valpo GnuCOBOL (OpenCOBOL) 11 22 de febrero de 2024 14:45
[Duda] Error en apertura de archivo JMP031OI-U Acc-Method Lascu PowerCOBOL (ActiveX, v4 - v11) 0 23 de julio de 2019 15:06
[Sintaxis] Error de lectura en archivo jmeza PowerCOBOL (ActiveX, v4 - v11) 2 12 de diciembre de 2017 12:13
[Compilador] Error 9Z al abrir un fichero Brandon AcuCobol 1 29 de agosto de 2016 19:13
[Duda] Error al visualizar archivo PDF en red Roger PowerCOBOL (ActiveX, v4 - v11) 9 31 de agosto de 2015 20:21

Respuesta

  #1
Antiguo 29 de enero de 2024, 19:44
JonathanDemons_123
Acabo de llegar...
Última Actividad 08.10.2024 05:12
Posts Posts: 4
Likes enviados Enviados: 1
Likes recibidos Recibidos: 0
Predeterminado Error linea abrir archivo
0 Inactivo Inactivo

Buenas tardes:

Estoy aprendiendo cobol, estoy en leer un archivo, pero al querer leerlo, me sale el siguiente error:

[ATTACH=CONFIG]953[/ATTACH]

Esta es la estructura de la linea, me sale el error cuando quiero imprimir la linea del 38 al 41, pienso que es porque en esa linea hay espacio en blanco:

Código:
50502121 MM01000000000922000268                          B04B1688035B4426
50538000 MM01000000000127420265      AA15            B04B115850952110
Aprovechando otra duda??

Como se declara variables decimales, y como se asigna el valor, tomando como ejemplo estas lineas:

Asi tengo de ejemplo de declarar variable decimal, 05 DIGITOS PIC S9(12)V9(2).
Código:
50502121 MM01000000000922000268                          B04B1688035B4426
50538000 MM01000000000127420265      AA15            B04B115850952110
Para las primeras lineas seria: 2.68 y la segunda 2.65, pero el como pasar a decimal, es que no lo he encontrado.

Código COBOL:
  1.      *-------------------------------------------------
  2.        IDENTIFICATION                   DIVISION.
  3.      *--------------------------------------------------
  4.        PROGRAM-ID.                      visorR3.
  5.        AUTHOR.                          A
  6.        DATE-WRITTEN.                    2023
  7.        SECURITY.              ============================================
  8.                               ============================================
  9.      *-------------------------------------------------------------------
  10.        ENVIRONMENT                       DIVISION.
  11.      *-------------------------------------------------------------------
  12.        CONFIGURATION                     SECTION.
  13.        SOURCE-COMPUTER.                  UNIX.
  14.        OBJECT-COMPUTER.                  UNIX.
  15.        INPUT-OUTPUT                       SECTION.
  16.        FILE-CONTROL.
  17.             SELECT RTRES ASSIGN TO "./RR3DKBB.330"
  18.             ORGANIZATION IS LINE SEQUENTIAL.
  19.      *--------------------------------------------------------------
  20.        DATA DIVISION.
  21.        FILE                             SECTION.
  22.        FD RTRES.
  23.        01 REGISTRO.
  24.           05 TIPOREG PIC X(2).
  25.           05 R3 PIC X(156).
  26.           05 TIPOMOV PIC X(2).
  27.           05 CUENTA PIC X(5).
  28.           05 SOCIEDAD  PIC X(4).
  29.           05 DIGITOS PIC S9(12)V9(2).
  30.           05 LUGAR PIC X(4).
  31.           05 CENT PIC X(5).
  32.      ******************************************************************
  33.        WORKING-STORAGE                  SECTION.
  34.  
  35.        01 FDR3.
  36.           05 WS-STUDENT-ID PIC 9(15).
  37.           05 WS-NAME PIC A(55).
  38.        01 FIN PIC A(1).
  39.      ******************************************************************
  40.        PROCEDURE                        DIVISION.
  41.      ******************************************************************
  42.        OPEN INPUT RTRES.
  43.           PERFORM UNTIL FIN='Y'
  44.           READ RTRES INTO FDR3
  45.             AT END MOVE 'Y' TO FIN
  46.             NOT AT END
  47.                 IF FDR3(1:2) = "50" OR FDR3(1:2)= "40"
  48.                         DISPLAY "LINEA"
  49.                         MOVE FDR3(1:2) TO TIPOREG
  50.                         DISPLAY TIPOREG
  51.                         MOVE FDR3(10:13) TO SOCIEDAD
  52.                         DISPLAY SOCIEDAD
  53.                         MOVE FDR3(28:31) TO LUGAR
  54.                         DISPLAY LUGAR
  55.                         MOVE FDR3(32:36) TO CENT
  56.                         DISPLAY CENT
  57.                         DISPLAY FDR3(38:39)***********Esta linea es la que me marca error
  58.                 END-IF
  59.           END-READ
  60.         END-PERFORM.
  61.        CLOSE RTRES.
  62.        STOP RUN.                       

Miniatura de Adjuntos
Pulsar la imagen para la versión amplia
Nombre:  captura.png
Vistas: 51
Tamaño:  4,8 KB  
JonathanDemons_123 is offline   Responder Con Cita
  #2
Antiguo 29 de enero de 2024, 20:04
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

@JonathanDemons_123, con FDR3(38:39), le estás diciendo que de esa variable, empiece en la posición 38, y te muestre 39 posiciones más, (que hace un total de 77 posiciones, 38 + 39 = 77), la variable tuya, tiene un máximo de 70 posiciones, por lo que no te debe de funcionar, no sé que es lo que realmente quieres "displayar" pero cuando lo haces de esa manera, el formato es

VARIABLE (n:p)

donde n es donde quieres empezar y p es la cantidad de posiciones que quieres manejar

algunos compiladores, permiten la sintaxis como

VARIABLE (n: )

que significa, desde esa posición hasta el tamaño máximo de la variable (el definido en la WORKING, no el usado), pero ya te comento que no lo soportan todos los compiladores

No sé si me explico bien ...

En respuesta al tema de los decimales, COBOL, no almacena los decimales de ninguna manera, cuando tú guardas por ejemplo, la cifra 1234 en una variable definida como PIC S9(6), ésta se almacena como +001234, si le añades decimales, por ejemplo 1234,567 en una variable PIC S9(6)V999, la cifra se almacena como +001234567, realmente es "la máscara" definida en la PICTURE, la que le da la estructura al dato, lo más cerca que puedes estar para definirlo y que se almacene lo más "natural" posible es que le añadas la cláusula USAGE DISPLAY a la variable y, dependiendo de compilador que uses te lo hará bien o no.

Un salu2.-

Última edición por Josber fecha: 29 de enero de 2024 a las 20:14.
Josber is offline   Responder Con Cita
Respuesta


Herramientas

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 16:04.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.