Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   Sentencia CLASS en SPECIAL-NAMES (https://www.cobolforo.es/showthread.php?t=318)

Lascu 28 de enero de 2016 23:23

Sentencia CLASS en SPECIAL-NAMES
 
Hola
En una rutina en la que quiero revisar que el usuario no ingrese caracteres no válidos para el nombre de un correo electrónico, quiero declarar en la sección SPECIAL-NAMES la siguiente sentencia

Código COBOL:
  1. CLASS wk-caracter-valido IS  '@', '_', '.',  'a' THRU 'i', 'j' THRU 'r', 's' THRU 'z', '0' THRU '9'.

Según leí en el manual esta es la forma correcta de hacerlo (NETCOBLanguageReference capítulo 4, página 127).
El problema me surge que al compilarlo no me reconoce la palabra CLASS y me tira el siguiente error " SPECIAL-NAMES(2) : JMN1123I-S An invalid word 'CLASS' was found".
¿ Se puede declarar esto de otra manera ?

Lascu

Kuk 29 de enero de 2016 09:39

Lascu, creo que te estás equivocando... Además, lo que tú quieres se puede hacer con un nivel 88 y un pequeño bucle:

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID.    TESTMAIL.
  3.        DATA DIVISION.
  4.        WORKING-STORAGE SECTION.
  5.        01  WS-MAIL.
  6.            05  WS-MAIL-CHAR           PIC X OCCURS 50 TIMES.
  7.                88  WS-CHAR-VAL-SI           VALUES '@' '_' '.'
  8.                'a' THRU 'i', 'j' THRU 'r', 's' THRU 'z', '0' THRU '9'.
  9.  
  10.        01  IDX-1                      PIC 99.
  11.        01  SW-ERROR                   PIC X.
  12.            88  SW-ERROR-SI                 VALUE 'S'.
  13.            88  SW-ERROR-NO                 VALUE 'N'.
  14.  
  15.        PROCEDURE DIVISION.
  16.  
  17.            MOVE "[email protected]"  TO WS-MAIL *>EJEMPLO
  18.            MOVE FUNCTION LOWER-CASE(WS-MAIL) TO WS-MAIL
  19.  
  20.            SET SW-ERROR-NO TO TRUE
  21.  
  22.            MOVE 1 TO IDX-1
  23.  
  24.            PERFORM UNTIL WS-MAIL-CHAR(IDX-1) = SPACES OR IDX-1 > 50
  25.                IF  NOT WS-CHAR-VAL-SI(IDX-1)
  26.                    SET SW-ERROR-SI TO TRUE
  27.  
  28.                    EXIT PERFORM
  29.                END-IF
  30.  
  31.                ADD 1 TO IDX-1
  32.            END-PERFORM
  33.  
  34.            IF  SW-ERROR-SI
  35.                DISPLAY "Error de e-mail: " WS-MAIL-CHAR(IDX-1)
  36.  
  37.            ELSE
  38.                DISPLAY "¡E-mail correcto!"
  39.            END-IF
  40.  
  41.            GOBACK.


La franja horaria es GMT +2. Ahora son las 17:03.

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