I have some code that tries to find the index of an element in a vector. It then tries to assign the matches to another variable. Here is a working example:

x = { -1, 0, 1, 2, 3, 4 }; idx = indexcat(x, (x < 0)); z = x[idx];

This assigns all members of `x` that are less than zero to `z`. In this case it is only -1. If there are no matches, however, it will fail with `error G0058 : index out of range`. For example:

x = { 1, 2, 3, 4 }; idx = indexcat(x, (x < 0)); z = x[idx];

Is there a way for me to catch this before the error ends my program?

## 1 Answer

0

If the function `indexcat` cannot find a match, it will return a scalar error code. Scalar error codes in GAUSS are very much like a missing value that contains an integer error code.

For your purposes, you will just need to check the output from `indexcat` to see if it is something that will not work as a valid index. The GAUSS function `isinfnanmiss` is probably what you want to use. This function will return a 1 if the input is an infinity, a Nan or a missing value.

Here is how you could use it in your code:

x = { 1, 2, 3, 4 }; idx = indexcat(x, (x < 0)); //check to see if 'idx' contains an invalid index value if isinfnanmiss(idx); //code to handle case where match //was not found in x else; z = x[idx]; endif;

## Your Answer

## 1 Answer

If the function `indexcat` cannot find a match, it will return a scalar error code. Scalar error codes in GAUSS are very much like a missing value that contains an integer error code.

For your purposes, you will just need to check the output from `indexcat` to see if it is something that will not work as a valid index. The GAUSS function `isinfnanmiss` is probably what you want to use. This function will return a 1 if the input is an infinity, a Nan or a missing value.

Here is how you could use it in your code:

x = { 1, 2, 3, 4 }; idx = indexcat(x, (x < 0)); //check to see if 'idx' contains an invalid index value if isinfnanmiss(idx); //code to handle case where match //was not found in x else; z = x[idx]; endif;