Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Comando Perform... (https://www.cobolforo.es/showthread.php?t=1581)

Fito 5 de enero de 2023 15:50

Comando Perform...
 
Hola Amigos:

En otros coboles he visto que hay una instruccion EXIT PERFORM CYCLE. Esto hace que un bucle siga iterando salteando las instrucciones siguientes.

En PowerCobol tendremos algo parecido?

Saludos


Fito....

JCantero 5 de enero de 2023 16:21

@Fito, esto funciona en opencobol, acucobol y rmcobol

No tengo el compilador de powercobol, pruebalo.

Código COBOL:
  1.      ******************************************************************
  2.      * Author:
  3.      * Date:
  4.      * Purpose:
  5.      * Tectonics: cobc
  6.      ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.        PROGRAM-ID. YOUR-PROGRAM-NAME.
  9.        DATA DIVISION.
  10.        FILE SECTION.
  11.        WORKING-STORAGE SECTION.
  12.        01 i pic 99.
  13.        PROCEDURE DIVISION.
  14.        MAIN-PROCEDURE.
  15.             DISPLAY "Hello world"
  16.             perform varying i from 1 by 1 until i = 10
  17.                display i
  18.                if i = 5 THEN
  19.                      exit perform
  20.                end-if                
  21.             end-perform.
  22.             STOP RUN.
  23.        END PROGRAM YOUR-PROGRAM-NAME.
  24.  

Josber 5 de enero de 2023 16:27

@Fito, Te refieres a que no se ejecutan las instrucciones del perform, pero éste continúa, ¿no?, o ¿te refieres a salir de un perform?

JCantero 5 de enero de 2023 16:45

@Fito, incluso en el caso de que tengas perform anidados "exit perform" sale del perform que lo contiene

Código COBOL:
  1.      ******************************************************************
  2.      * Author:
  3.      * Date:
  4.      * Purpose:
  5.      * Tectonics: cobc
  6.      ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.        PROGRAM-ID. YOUR-PROGRAM-NAME.
  9.        DATA DIVISION.
  10.        FILE SECTION.
  11.        WORKING-STORAGE SECTION.
  12.        01 i pic 99.
  13.        01 j pic 99.
  14.        PROCEDURE DIVISION.
  15.        MAIN-PROCEDURE.
  16.             DISPLAY "Hello world"
  17.             perform varying i from 1 by 1 until i = 10
  18.                display i
  19.                if i = 5 THEN
  20.                      exit perform
  21.                end-if                
  22.                perform varying j from 1 by 1 until j = 10
  23.                   display '--'
  24.                   if j = 3 THEN
  25.                      exit perform
  26.                   end-if                
  27.                end-perform  
  28.             end-perform.
  29.             STOP RUN.
  30.        END PROGRAM YOUR-PROGRAM-NAME.
  31.  

Fito 6 de enero de 2023 14:21

Hola Amigos:

Me refiero a que siga con el otro elemento del bucle, que salte las instrucciones de abajo, no quiero que salga del perform. El EXIT PERFORM en power está.

Saludos....

Fito...

Kuk 6 de enero de 2023 15:01

@Fito, el compilador de Fujitsu no lo tiene. Debes hacerlo mediante IFs y ELSEs.

Kuk 6 de enero de 2023 18:05

@Fito, también puedes hacerlo con párrafos y simular el Break del lenguaje C, que es lo que querías en principio:

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01  idx   pic 9(4) comp-5.
  5.  PROCEDURE       DIVISION.
  6.      
  7.      move 1 to idx
  8.      
  9.      perform loop
  10.         thru loop-exit
  11.        until idx > 10
  12.      
  13.      goback
  14.      .
  15.      
  16.  loop.
  17.      
  18.      if  idx = 5
  19.          add 1 to idx
  20.          
  21.          go to loop-exit
  22.      end-if
  23.      
  24.      display idx
  25.      
  26.      add 1 to idx
  27.      .
  28.  
  29.  loop-exit.
  30.      exit.

Fito 6 de enero de 2023 18:09

Hola @Kuk, de forma "casera" lo hago así, pero era por si había una instrucción que me podía clarificar el código, nada más.

De esa manera como decís, es como lo vengo haciendo desde siempre

Saludos

Fito...

Kuk 6 de enero de 2023 22:57

@Fito, PowerCOBOL no acepta lo que mencionas en tu primer post, esto es seguro. Así que no queda otra que hacerlo como lo hacías siempre. ;)


La franja horaria es GMT +2. Ahora son las 00:26.

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