Cobol en español
  Página de Inicio Recomiéndala Contáctame Usuarios en Linea
103
     Crea Una cuenta  
Video 1
Video 2
Video 3

Si te ha servido la web
o te han gustado los videos, colabora haciendo click en el botón.

MANUALES
TEMATICOS
BASES DE DATOS
COBOL / WINDOWS
COBOL / UNIX
HISTORIA /DOCS
 
BUSCADOR
PROGRAMANDO-Dos
TRUCOS
AÑO 2.000
TEORIA POWCOB-3
PROG. POWCOB-3
TEORIA POWCOB-5
PROG. POWCOB-5
OCX-ESCOBOL
RUTINAS/MANUALES
OCX / JUEGOS
HERRAMIENTAS
COMPILADORES
ENCUESTAS
ENLACES
FOROS
TOP 10

CHAT   Usuarios: 0
Manuales
TEMARIOIntroducción
Identification Division
Environment Division
Data Division
Procedure Division
Instr. de Cálculo
Instr. de Archivos
Instr. de Pantalla
Instr. de Variables
Instrucción Perform

Instr. de Variables

página(s) : 4/5
(5707 palabras totales en este texto)
(96005 Lecturas)   Versión Imprimible



STRING, se utiliza para unir o concatenar campos o partes de estos y el resultado almacenarlo en otro campo. En la unión se pueden incluir tanto variables como literales o constantes de texto.

STRING campo1, literal1
         DELIMITED BY (campo2, literal2)(SIZE)
           INTO
Campo3
         (WITH POINTER Identificador1)
           ( ON OVERFLOW Sentencia1)
           ( NOT ON OVERFLOW Sentencia2)

  • DELIMITED BY, indica hasta donde vamos a "coger" del campo para concatenar sin contar ese caracter o cadena que se especifique en campo2 o literal2, es decir si tenemos un campo con un valor = "HOLA" y especificamos DELIMITED BY "L" a la hora de la concatenación nos hubiera cogido solo el HO, ya que al encontrarse la primera L hubiera parado.
  • SIZE, indica que se pasará todo el contenido del campo1 o literal1 sin limitaciones.
  • INTO, con esto indicamos en que variable se guardará el resultado, campo3.
  • WITH POINTER, si incluimos esta cláusula el valor de identificador1 será en la posición en que empezará a contener datos la variable que recibe el STRING. Ese identificador1 debe estar definido como binario. Por defecto el valor es 1.
  • ON OVERFLOW, se ejecutaría Sentencia1 si hubiera habido un error al hacer la concatenación, por ejemplo si se especifica Identificador1 con un valor superior al tamaño del Campo3.
  • NOT ON OVERFLOW, se ejecutará Sentencia2 si no existe error en la operación.

Vamos a ver unos ejemplos y además vamos a comparar como se hubiera hecho utilizando la Working si no existiera el STRING.

...
WORKING-STORAGE SECTION.
01  LAFECHA.
     02  FILLER PIC X(7) VALUE "HOY ES ".
     02  LDIA    PIC Z9.
     02  FILLER PIC X(4) VALUE " DE ".
     02  LMES   PIC X(10).
     02  FILLER PIC X(4)  VALUE "DE ".
     02  LANIO  PIC 9999.
01  FECHA.
     02  DIA    PIC 99 VALUE 22.
     02  MES   PIC 99 VALUE 06.
     02  ANIO  PIC 9999 VALUE 2001.
01  CONSTRING PIC X(40).
01  TABLAMES.
     02  FILLER PIC X(30) VALUE "ENERO     FEBRERO   MARZO      ".
     02  FILLER PIC X(30) VALUE "ABRIL      MAYO       JUNIO        ".
     02  FILLER PIC X(30) VALUE "JULIO      AGOSTO  SEPTIEMBRE".
     02  FILLER PIC X(30) VALUE "OCTUBRE NOVIEMBREDICIEMBRE ".
01  LATABLA REDEFINES TABLAMES.
     02  TMES PIC X(10) OCCURS 12 TIMES.
01  PUNTO PIC 9(4) BINARY.
...
PROCEDURE DIVISION.
INICIO.
      MOVE DIA TO LDIA.
      MOVE TMES (MES) TO LMES.
      MOVE ANIO TO LANIO.

      STRING "HOY ES " DIA " DE " TMES (MES) " DE " ANIO
                  DELIMITED BY SIZE INTO CONSTRING.
...

    El valor de LAFECHA sería: HOY ES 22 DE JUNIO       DE 2001.

    El valor de CONSTRING sería: HOY ES 22 DE JUNIO       DE 2001.

    Fijaros que el resultado es el mismo pero en cambio gracias a STRING no hemos tenido que definir ninguna linea en la WORKING ni tampoco tener que mover campos de unas variables a otras.

    La cláusula DELIMITED BY se ha puesto al final porque dicha cláusula se aplica a todos los campos que la preceden, si hubieramos querido coger otra limitación para un campo en concreto habría que haberlo especificado, por ejemplo vamos a afinar mas el ejemplo y conseguir que entre el mes JUNIO y el DE no exista mas que un espacio. En el ejemplo anterior ha unido los 10 caracteres que tiene la variable TMES.

 
    STRING "HOY ES " DIA " DE " DELIMITED BY SIZE
          TMES (MES) DELIMITED BY " "
          " DE " ANIO  DELIMITED BY SIZE INTO CONSTRING.

    El valor que tendrá ahora CONSTRING será el siguiente:
    HOY ES 22 DE JUNIO DE 2001.

    Como veis la diferencia está en los espacios que le sobran al mes, que al poner DELIMITED BY " " los ha evitado porque solo ha concatenado hasta que ha encontrado el primer caracter en blanco.

 
    MOVE 4 TO PUNTO.
    STRING "HOY ES " DIA " DE " DELIMITED BY SIZE
          TMES (MES) DELIMITED BY " "
          " DE " ANIO  DELIMITED BY SIZE INTO CONSTRING
          WITH POINTER PUNTO.

    El valor que tendrá ahora CONSTRING será el siguiente:
        HOY ES 22 DE JUNIO DE 2001.

    Es decir habrá empezado a concatenar a partir de la posición 4 del campo CONSTRING. Si el valor de CONSTRING previamente era espacios habría dejado 3 espacios en blanco y si hubiera sido cualquier otro hubiera respetado los 3 primeros caracteres que tuviera.

(3/5) Anterior |    Inicio de Página    | Siguiente (5/5)
Sitio desarrollado con PHP-Nuke. Todos los Derechos Reservados.
PHP-Nuke es un Software Libre realizado con licencia GNU/GPL.
Página creada en Junio de 1.998, con el proposito de difundir el lenguaje Cobol en nuestra lengua.
Andres Montes [98/11]