STL (Standard Language File System)

STL (англ. STandart Language File System) - файловая система, используемая в UNIX-подобной операционной системе AIX от IBM. Файловая система STL соответствует стандарту COBOL 85, а также имеет возможность легкого портирования между AIX и Windows. STL используется при чтении и записи файлов в PL/I-программах. STL поддерживает последовательный, индексированный и релятивный тип файлов и содержит основные инструменты работы с файлами. В STL реализована безопасная работа с потоками. Одним из нюансов является то, что два и более потоков не могут иметь первый уровень доступа записи в файл одновременно. Несколько потоков могут работать с одним файлом, но для этого необходимо использовать системные вызовы (например, WaitForSingleObject).

Пример идентификации файла в STL

Идентификация файла с помощью команды SELECT:

SELECT file1 ASSIGN USING 'STL-MyFile

При активной опции FILESYS(STL):

SELECT file1 ASSIGN TO 'MyFile'

При предварительном определении переменной среды MYFILE (например, export MYFILE=STL-MYFILE), идентификация выглядит так:

SELECT file1 ASSIGN TO MYFILE

Возвращаемые коды

После операции ввода/вывода появляется следующая информация: FILE STATUS data-name-1 data-name-8 , где data-name-1 содержит код статуса, независящий от используемой файловой системы, и data-name-8 содержит один из возвращаемых кодов STL.

Таблица 1. Возвращаемые коды STL
Код Значение Пояснение
0 Successful completion Операция ввода/вывода произведена успешно
1 Invalid operation Нежелательный код. Указывает на ошибку в файловой системе
2 I/O error Ошибка операции ввода/вывода
3 File not open Попытка произвести операцию (кроме OPEN) над закрытым файлом
4 Key value not found Попытка прочитать запись по несуществующему ключу
5 Duplicate key value Попытка повторного использования ключа, который не допускает дубликатов
6 Invalid key number Ошибка в файловой системе
7 Different key number Ошибка в файловой системе
8 Invalid flag for the operation Ошибка в файловой системе
9 End-of-file Конец файла (это не ошибка)
10 I/O operation must be preceded by an I/O \n GET operation Операция ссылается на неопределенную запись
11 Error return from get space routine Малое количество доступной памяти
12 Duplicate key accepted В ходе операции был определен дубликат ключа
13 Sequential access and key sequence bad Был определен последовательный доступ, но ключи находятся в непоследовательном порядке
14 Record length < max key Недостаточная длина записи для записи всех ключей
15 Access to file denied Операционная система не может обратиться к файлу. Файл не существует, или отсутствуют права доступа
16 File already exists Попытка создания уже существующего файла
17 (Reserved)
18 File locked Попытка открыть файл, который открыт в режиме с ограниченным доступом
19 File table full Таблица файла заполнена
20 Handle table full ОС больше не может выделить указатели на файл
21 Title does not say STL Файл, открытый для чтения с помощью STL должен содержать заголовок записи, который содержит "STL" на определенной позиции в файле
22 Bad indexcount argument for create Ошибка в файловой системе
23 Index or relative record > 64 KB Индексированные и релятивные записи имеют ограничение в 64 Кб
24 Error found in file header or data in open of existing file STL-файлы начинаются с заголовка. Заголовок или связанный с ним данные имеют противоречивые значения
25 Indexed open on sequential file Попытка открыть последовательный файл как индексированный или релятивный файл
Таблица 2. Коды ошибок процедуры открытия файлов
Код Значение Пояснение
1000 Sequential open on indexed or relative file Попытка открыть индексированный или релятивный файл как последовательный
1001 Relative open of indexed file Попытка открыть релятивный файл как индексированный
1002 Indexed open of sequential file Попытка открыть индексированный файл как последовательный
1003 File does not exist Файл не существует
1004 Number of keys differ Попытка открыть файл с другим числом ключей
1005 Record lengths differ Попытка открыть файл с другой длиной записи
1006 Record types differ Попытка открыть файл с другим типом записи
1007 Key position or length differs Попытка открыть файл с другой длиной или позицией ключа