La función de sistema strLib.getNextToken busca un símbolo en una subserie y copia dicho símbolo en un elemento destino.
Los símbolos son series separadas por caracteres delimitadores. Por ejemplo, si el espacio entre caracteres (" ") y la coma (",") se definen como delimitadores, la serie "CALL PROGRAM ARG1,ARG2,ARG3" puede descomponerse en cinco símbolos "CALL", "PROGRAM", "ARG1", "ARG2" y "ARG3".

- resultado
- Un elemento definido como de tipo INT o el siguiente equivalente: tipo BIN con longitud 9 y sin posiciones decimales. El valor es uno de los siguientes:
- +n
- Número de caracteres del símbolo. El símbolo se copia de la subserie bajo revisión al elemento destino.
- 0
- No había ningún símbolo en la subserie bajo revisión.
- -1
- El símbolo se ha truncado cuando se ha copiado en el elemento destino.
- destino
- Elemento destino de tipo CHAR, DBCHAR, HEX, MBCHAR o UNICODE.
- origen
- Elemento origen de tipo CHAR, DBCHAR, HEX, MBCHAR o UNICODE. Puede ser un literal de
cualquiera de esos tipos que no sea UNICODE.
- índiceSubserieOrigen
- Identifica el byte inicial en el que se debe empezar a buscar un delimitador, suponiendo que el primer byte de origen tiene el valor 1. índiceSubserieOrigen puede ser un elemento definido como de tipo INT o el siguiente equivalente: tipo BIN con longitud 9 y sin posiciones decimales. Si se encuentra un símbolo, el valor de índiceSubserieOrigen se cambia por el índice del primer carácter que sigue al símbolo.
- longitudSubserieOrigen
- Indica el número de bytes de la subserie que se está revisando. longitudSubserieOrigen puede ser un elemento definido como de tipo INT o el siguiente equivalente: tipo BIN con longitud 9 y sin posiciones decimales. Si se encuentra un símbolo, el valor de longitudSubserieOrigen se cambia por el número de bytes de la subserie que empieza después del símbolo devuelto.
- carácterDelimitador
- Uno o más caracteres delimitadores, sin caracteres que los separen entre sí. Puede
ser un elemento de tipo CHAR, DBCHAR, HEX, MBCHAR o UNICODE. Puede ser un literal de
cualquiera de esos tipos que no sea UNICODE.
Puede invocar una secuencia de llamadas para recuperar cada símbolo de una subserie sin restablecer los valores para índiceSubserieOrigen y longitudSubserieOrigen, como se muestra más adelante en un ejemplo.
Ejemplo
Function myFunction()
myVar myStructurePart;
myRecord myRecordPart;
i = 1;
myVar.mySourceSubstringIndex = 1;
myVar.mySourceSubstringLength = 29;
while (myVar.mySourceSubstringLength > 0)
myVar.myResult = strLib.getNextToken( myVar.myTarget[i],
"CALL PROGRAM arg1, arg2, arg3",
myVar.mySourceSubstringIndex,
myVar.mySourceSubstringLength, " ," );
if (myVar.myResult > 0)
myRecord.outToken = myVar.myTarget[i];
add myRecord;
set myRecord empty;
i = i + 1;
end
end
end
Record myStructurePart
01 myTarget CHAR(80)[5];
01 mySource CHAR(80);
01 myResult myBinPart;
01 mySourceSubstringIndex INT;
01 mySourceSubstringLength BIN(9,0);
01 i myBinPart;
end
Record myRecordPart
serialRecord:
fileName="Output"
end
01 outToken CHAR(80);
end