Введение
На многих вычислительных платформах всё представляется файлом, но в отличие от IBM i, всё представляется объектом.
Обзор
Объекты IBM i имеют сходство с объектами в объектно-ориентированном программировании, но есть и различия. Сходство заключается в том, что при выделении хранилища для чего-либо, это что-либо имеет определенный тип, и только определенный набор программ разрешен для работы с этим объектом. Различия заключаются в том, что объекты IBM i не могут быть унаследованы, набор типов объектов фиксирован, и только IBM имеет возможность создавать новые типы. Количество типов объектов огромно, и лишь небольшая их часть доступна пользователям. Человекочитаемая форма типа объекта всегда представляет собой мнемоническое обозначение из трех-шести символов, предваряемое звездочкой. Ниже приведен краткий список наиболее часто используемых объектов и их мнемоник:
*LIB: Библиотека (где хранится все ниже, за исключением каталогов и потоковых файлов; библиотеки не могут существовать внутри других библиотек). *PGM: Программа (для компилируемых языков: CL, RPG IV, C, C++, COBOL и т.д., и между языками нет ограничений по интерфейсам). *MODULE: Модуль (связываемый с программой из компилируемого языка, указанного выше, и здесь также нет ограничений на связываемость между языками). *SRVPGM: Сервисная программа (динамический набор одного или нескольких модулей, аналогичный DLL-файлу в Microsoft Windows). *BNDDIR: Каталог привязки (содержит список модулей и сервисных программ и используется при создании программ). *CMD: Команда (объект, используемый для вызова программ, который позволяет пользователям запрашивать параметры; может быть создан с использованием языка определения команд). Подробная информация приведена в разделе "Язык управления". *MENU: Меню (доступ к нему осуществляется с помощью команды GO). *FILE: Файл (файлы IBM i могут использоваться для данных, устройств ввода/вывода и исходного кода, в зависимости от подтипа). *DTAARA: Область данных (небольшие объемы памяти, используемые для хранения небольших фрагментов данных для быстрого доступа). *DIR: Каталог (часть интегрированной файловой системы, эквивалентная иерархическим файловым системам Unix и Microsoft Windows). *STMF: Потоковый файл (традиционный файл, который знаком большинству пользователей Unix и Microsoft Windows и хранится только в каталогах). *JRN & *JRNRCV: Журнал и приемник журнала (используются для ведения журнала изменений в файлах, областях данных и потоковых файлах). *USRPRF: Профиль пользователя (позволяет пользователям входить в систему). *JOBD: Описание задания (используется при отправке/запуске заданий). *SBSD: Описание подсистемы (используется при запуске подсистем; это место, где выполняются пользовательские задания). *JOBQ: Очередь заданий (используется для постановки в очередь пакетных заданий для выполнения в подсистеме). *LIND: Описание линии (линия связи: Ethernet, Token Ring и т.д.). *CTLD: Описание контроллера (контроллер связи для линий, рабочих станций и т.д.). *DEVD: Описание устройства (устройство связи для линий, рабочих станций, принтеров, магнитных лент и т.д.). *DTAQ: Очередь данных (используется для постановки в очередь записей данных для быстрого извлечения другими заданиями). *MSGQ: Очередь сообщений (используется для отправки сообщений пользователям, также может использоваться как очередь данных). *OUTQ: Выходная очередь (используется для постановки в очередь вывода на принтер). *USRSPC: Пользовательское пространство – универсальный объект данных произвольного размера (до 16 ТБ).
*LIB: Library (where everything below, except directories and stream files, is stored; libraries cannot exist within other libraries). *PGM: Program (for compiled languages: CL, RPG IV, C, C++, COBOL, etc. and there are no interface restrictions between the languages). *MODULE: Module (linkable into a program from a compiled language above and here too there are no restrictions on linkability between languages). *SRVPGM: Service program (dynamic set of one or more modules, akin to a DLL file in Microsoft Windows). *BNDDIR: Binding directory (holds a list of modules and service programs and is used when creating programs). *CMD: Command (an object used for calling programs that allows users to prompt for their parameters; can be created with the Command Definition language). See Control Language for more information. *MENU: Menu (accessed with the GO command). *FILE: File (IBM i files can be used for data, input/output devices, and source code, depending on sub type). *DTAARA: Data area (small bits of storage used to store tiny items of data for fast access). *DIR: Directory (part of the Integrated File System that is equivalent to Unix and Microsoft Windows hierarchical file systems). *STMF: Stream file (traditional file that would be familiar to most Unix and Microsoft Windows users and only stored in directories). *JRN & *JRNRCV: Journal and journal receiver (used to journal changes to files, data areas, and stream files). *USRPRF: User profile (allows users to sign on to the system). *JOBD: Job description (used when submitting/starting jobs). *SBSD: Subsystem description (used when starting subsystems; this is the place where user jobs run). *JOBQ: Job queue (used to queue up batch jobs to run in a subsystem). *LIND: Line description (communications line: Ethernet, token ring, etc.). *CTLD: Controller description (communications controller for lines, workstations, etc.). *DEVD: Device description (communications device for lines, workstations, printers tape drives, etc.) *DTAQ: Data queue (used to queue up data entries for fast retrieval by other jobs). *MSGQ: Message queue (used to send message to users, can also be used like a data queue). *OUTQ: Output queue (used to queue up output to a printer). *USRSPC: User space a generic data containing object of arbitrary size (up to 16T).
Библиотеки
Библиотека (*LIB) в IBM i – это объект, используемый в качестве системного каталога для учёта других объектов. Объекты не хранятся *внутри* библиотек, а библиотеки служат пространствами имён для объектов. Библиотеки являются "системными" объектами, поэтому возможно только одно вхождение для каждого заданного "имени" библиотеки. Они отображаются так, как будто хранятся в библиотеке QSYS.