operador in

El operador in es un operador binario utilizado en una expresión lógica elemental que tiene el siguiente formato:


Diagrama de sintaxis para el operador en
valorBúsqueda
Un literal o elemento, pero no una variable de sistema.
matriz
Una matriz unidimensional o multidimensional. El operador in opera en una matriz unidimensional, que puede ser un elemento de una matriz multidimensional.
subíndice
Un entero o un elemento (o variable de sistema) que se resuelve en un entero. El valor de un subíndice es un índice que hace referencia a un elemento específico de una matriz.

Un elemento utilizado como subíndice de una matriz no puede ser por sí mismo un elemento de matriz. En cada uno de los ejemplos siguientes, myItemB[1] es tanto un subíndice como un elemento de matriz; como resultado, la siguiente sintaxis no es válida:

  /* la sintaxis siguiente no es válida */ 
  myItemA[myItemB[1]]

  // esta sintaxis no es válida; pero sólo 
  // debido a que myItemB es myItemB[1], el 
  // primer elemento de una matriz unidimensional
  myItemA[myItemB]
dataTableItem
El nombre de un elemento dataTable. El elemento representa una columna de la tabla de datos. El operador in interactúa con esa columna como si ésta fuera una matriz unidimensional.
La expresión lógica se resuelve en true si el programa generado encuentra el valor de búsqueda. La búsqueda empieza en el elemento identificado por el último subíndice de matriz. Si matriz es una matriz unidimensional, el último subíndice es opcional y toma por omisión el valor 1. Si matriz es una matriz multidimensional, se aplican las siguientes normas:

En relación a las matrices tanto unidimensionales como multidimensionales, la búsqueda finaliza en el último elemento de la matriz unidimensional bajo revisión.

La expresión lógica que incluye in se resuelve en false en los siguientes casos:

Si la expresión lógica elemental se resuelve en true, la operación in establece la variable de sistema sysVar.arrayIndex en el valor de subíndice del elemento que contiene el valor de búsqueda. Si la expresión se resuelve en false, la operación establece sysVar.arrayIndex en cero.

Ejemplos con una matriz unidimensional

Supongamos que el elemento de estructura myString está subestructurado en una matriz de tres caracteres:
  structureItem name="myString" length=3
    structureItem name="myArray" occurs=3 length=1

La tabla siguiente muestra el efecto del operador in si myString es "ABC".

Expresión lógica Valor de la expresión Valor de sysVar. ArrayIndex Comentario
"A" en myArray true 1 El subíndice de una matriz unidimensional toma por omisión el valor 1
"C" en myArray[2] true 3 La búsqueda empieza en el segundo elemento
"A" en myArray[2] false 0 La búsqueda finaliza en el último elemento

Ejemplos con una matriz multidimensional

Supongamos que la matriz myArray01D está subestructurada en una matriz de tres caracteres:
  structureItem name="myArray01D" occurs=3 length=3
    structureItem name="myArray02D" occurs=3 length=1

En este ejemplo, myArray01D es una matriz unidimensional, cada uno de cuyos elementos contiene una serie que está subestructurada en una matriz de tres caracteres. myArray02D es una matriz bidimensional, cada uno de cuyos elementos (como por ejemplo myArray02D[1,1]) contiene un solo carácter.

Si el contenido de myArray01D es "ABC", "DEF" y "GHI", el contenido de myArray02D es el siguiente:
  "A"   "B"   "C"
  "D"   "E"   "F"
  "G"   "H"   "I"

La tabla siguiente muestra el efecto del operador in.

Expresión lógica Valor de la expresión Valor de sysVar. ArrayIndex Comentario
"DEF" en myArray01D true 2 Una referencia a una matriz unidimensional no requiere un subíndice; por omisión, la búsqueda empieza en el primer elemento
"C" en myArray02D[1] -- -- La expresión no es válida debido a que una referencia a una matriz multidimensional debe incluir un subíndice para cada dimensión
"I" en myArray02D[3,2] true 3 La búsqueda empieza en la tercera fila, segundo elemento
"G" en myArray02D[3,2] false 0 La búsqueda finaliza en el último elemento de la fila revisada
"G" en myArray02D[2,4] false 0 El segundo subíndice es mayor que el número de columnas disponibles para la búsqueda
Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.