Función INSERT

Sintaxis

INSERT (matriz.dinámica, númcampo, númvalor, númsubvalor, expresión)
INSERT (matriz.dinámica, númcampo [ ,númvalor [ ,númsubvalor] ] ; expresión)

Descripción

Utilice la función INSERT para devolver una matriz dinámica que tiene un nuevo campo, valor o subvalor insertado en la matriz dinámica especificada.

La expresión matriz.dinámica se evalúa como una matriz dinámica.

Los valores de númcampo, númvalor y númsubvalor especifican el tipo y la posición del elemento nuevo que se debe insertar y se denominan expresiones de delimitador. Los valores de númvalor y númsubvalor son opcionales, pero si se omiten debe anteponerse un carácter de punto y coma ( ; ) a expresión, como se muestra en la segunda línea de sintaxis.

El valor de expresión especifica el valor del elemento nuevo que se va a insertar.

Hay tres resultados posibles de la función INSERT, según las expresiones de delimitador especificadas.

Caso 1:
Si númvalor y númsubvalor se omiten o son 0, INSERT inserta un nuevo campo con el valor de expresión en la matriz dinámica.
  • Si númcampo es positivo y menor o igual que el número de campos de matriz.dinámica, el valor de expresión seguido de una marca de campo se inserta antes del campo especificado por númcampo.
  • Si númcampo es -1, una marca de campo seguida del valor de expresión se anexa al último campo de matriz.dinámica.
  • Si númcampo es positivo y mayor que el número de campos de matriz.dinámica, el número correcto de marcas de campo seguido del valor de expresión se anexa de modo que el valor de númcampo es el número del campo nuevo.
Caso 2:
Si númvalor es distinto de cero y númsubvalor se omite o es 0, INSERT inserta un nuevo valor con el valor de expresión en la matriz dinámica.
  • Si númvalor es positivo y menor o igual que el número de valores del campo, el valor de expresión seguido de una marca de valor se inserta antes del valor especificado por númvalor.
  • Si númvalor es -1, una marca de valor seguida del valor de expresión se anexa al último valor del campo.
  • Si númvalor es positivo y mayor que el número de valores del campo, el número correcto de marcas de valor seguido del valor de expresión se anexa al último valor del campo especificado de modo que el número del valor nuevo del campo es númvalor.
Caso 3:
Si númcampo, númvalor y númsubvalor se especifican, INSERT inserta un nuevo subvalor con el valor de expresión en la matriz dinámica.
  • Si númsubvalor es positivo y menor o igual que el número de subvalores del valor, el valor de expresión seguido de una marca de subvalor se inserta antes del subvalor especificado por númsubvalor.
  • Si númsubvalor es -1, una marca de subvalor seguida de expresión se anexa al último subvalor del valor.
  • Si númsubvalor es positivo y mayor que el número de subvalores del valor, el número correcto de marcas de subvalor seguido del valor de expresión se anexa al último subvalor del valor especificado de modo que el número del subvalor nuevo del valor es númsubvalor.

En las cuentas IDEAL, PICK, PIOPEN y REALITY, si expresión es una serie vacía y el elemento nuevo se anexa al final de la matriz dinámica, al final de un campo o al final de un valor, la matriz dinámica, el campo o el valor se deja sin modificar. Los delimitadores adicionales no se anexan. Utilice la opción EXTRA.DELIM de la sentencia $OPTIONS para hacer que la función INSERT anexe un delimitador a la matriz dinámica, al campo o al valor.

Si expresión se evalúa como valor nulo, se inserta el valor nulo en matriz.dinámica. Si matriz.dinámica se evalúa como valor nulo, no se modifica con la inserción. Si alguna expresión de delimitador es el valor nulo, la función INSERT falla y el programa termina con un mensaje de error de tiempo de ejecución.

Tipos INFORMATION e IN2

En las cuentas de tipo INFORMATION e IN2, si expresión es una serie vacía y el elemento nuevo se anexa al final de la matriz dinámica, al final de un campo o al final de un valor, se anexa un delimitador a la matriz dinámica, al campo o al valor. Utilice la opción -EXTRA.DELIM de la sentencia $OPTIONS para hacer que la función INSERT se ejecute como en las cuentas de tipo IDEAL, PICK y REALITY.

Ejemplos

En los ejemplos siguientes, se muestra una marca de campo junto a F, se muestra una marca de valor junto a V y se muestra una marca de subvalor junto a S.

El primer ejemplo inserta el carácter # antes del primer campo y establece Q en #FFF1V2V3S6F9F5F7V:

R=@FM:@FM:1:@VM:2:@VM:3:@SM:6:@FM:9:@FM:5:@FM:7:@VM:3
Q=INSERT(R,1,0,0,"#")

El ejemplo siguiente inserta un carácter # antes del tercer valor del campo 3 y establece el valor de Q en FF1V2V#V3S6F9F5F7V3:

Q=INSERT(R,3,3;"#")

El ejemplo siguiente inserta una marca de valor seguida de un carácter # tras el último valor del campo y establece Q en FF1V2V3S6F9V#F5F7V3:

Q=INSERT(R,4,-1,0,"#")

El ejemplo siguiente inserta un carácter # antes del segundo subvalor del segundo valor del campo 3 y establece Q en FF1V2S#V3S6F9F5F7V3:

Q=INSERT(R,3,2,2;"#")