Строку "In.Int(mas[N]);" следует понимать так: "Прочитать очередное целое число и сохранить его в массив mas под номером N". Однако, операция In.Int может завершиться ошибкой, о чём мы узнаем позже, вызвав In.Done.

На момент завершения первого цикла WHILE переменная N содержит индекс последнего сохранённого в массив элемента. Если в массив помещено 5 элементов, то N = 4. Но так как последний элемент был помещён с ошибкой (In.Done = FALSE), про него надо "забыть", уменьшив N на один. Об этом написано в процитированном вами примечании.

В вашем коде строка "k:=k+1;" повторяется дважды. Это ошибка. В первом вхождении должно быть "k:=1;".

Примечание от меня: можно удалить "N:=N-1;", а во втором цикле WHILE условие "<=" заменить на "<".