Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL v3 (V3L10, Win32) (https://www.cobolforo.es/forumdisplay.php?f=5)
-   -   [Sintaxis] NO LOCK en "Read ... previous record" no anda? (https://www.cobolforo.es/showthread.php?t=367)

Adrianeloy 11 de abril de 2016 20:41

NO LOCK en "Read ... previous record" no anda?
 
Al leer un fichero indexado avanzando/retrocediendo registros (luego de START)...

READ ... NEXT RECORD NO LOCK ... me funciona a la perfeccion, pero la instruccion:

READ ... PREVIOUS RECORD NO LOCK me muestra solo el primer registro leido, y no retrocede de ninguna manera.

Pero si le quito la opcion "NO LOCK" funciona a la perfección.
Este inconveniente lo tengo desde hace mucho tiempo, pero necesitaria que el previous record tambien me mantuviera el registro sin bloquear.
Estaré haciendo algo mal o esa opcion no funciona con PREVIUS RECORD?

Josber 11 de abril de 2016 20:50

Yo tengo el siguiente código y funciona perfectamente

Código COBOL:
  1.      MOVE "Text" OF CAMPO1 TO ARTCOD.
  2.    
  3.      START ARTICULOS KEY LESS THAN XACOD
  4.            INVALID KEY
  5.                    INVOKE POW-SELF "Alarm"
  6.                    ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
  7.                    INVOKE POW-SELF "DisplayMessage"
  8.                           USING "*ERROR: Principio de fichero ..."
  9.                                 WS-ATENCION
  10.                                 ESTILO
  11.                    END-INVOKE
  12.                    INVOKE BTANT "SetFocus"
  13.                    EXIT PROGRAM
  14.      END-START.
  15.      
  16.      READ ARTICULOS PREVIOUS RECORD WITH NO LOCK
  17.           AT END
  18.              INVOKE POW-SELF "Alarm"
  19.              ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
  20.              INVOKE POW-SELF "DisplayMessage"
  21.                     USING "*ERROR: Principio de fichero ..."
  22.                           WS-ATENCION
  23.                           ESTILO
  24.              END-INVOKE
  25.              INVOKE BTANT "SetFocus"
  26.              EXIT PROGRAM
  27.           NOT AT END
  28.               MOVE ARTCOD TO "Text" OF CAMPO1
  29.               CALL "EXISTE"
  30.      END-READ.

Lo único que se me ocurre, es que no hagas correctamente el START, y en vez de LESS THAN, pongas GREATER THAN ...

Un saludo.-

Adrianeloy 12 de abril de 2016 14:26

Josber, El Start funciona a la perfeccion y el programa funciona perfectamente cuando le quito la opcion "NO LOCK" a la sentencia READ PREVIOUS RECORD.

Pero se la agrego, compilo y ejecuto y no retrocede ningun registro, solo me muestra el primer registro hallado!
Me falto decir que funciona en Powercobol V3.
Voy a probarlo en Netcobol 9, a ver si hace lo mismo...

Josber 12 de abril de 2016 16:33

Pues o es un fallo de la versión 3 o no se me ocurre qiue puede pasar, yo en FILE-CONTROL, inserto todos los ficheros con más o menos la misma estructura:

Código COBOL:
  1. 000001     SELECT OPTIONAL MENSAJES     *> FICHERO DE MENSAJES
  2. 000002         ASSIGN TO FILEMEN
  3. 000003
  4. 000004         ORGANIZATION IS INDEXED
  5. 000005         ACCESS MODE IS DYNAMIC
  6. 000006         RECORD KEY IS MENCOD
  7. 000010         ALTERNATE KEY IS MENFEC WITH DUPLICATES
  8. 000020         ALTERNATE KEY IS MENREC WITH DUPLICATES
  9. 000999         LOCK IS AUTOMATIC WITH LOCK ON RECORD
  10. 001000         FILE STATUS IS STMEN.

Prueba a hacer la estructura más o menos así y nos comentas algo ...

Un saludo.-

Adrianeloy 13 de abril de 2016 14:59

Josber, Acabo de probar lo mismo en Netcobol V9 y el "NO LOCK" en Read Previous Record funciona perfectamente!
Asi que lamentablemente, es un error que tiene el Powercobol V3.
Una verdadera lastima...


La franja horaria es GMT +2. Ahora son las 14:04.

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