On most other platforms everything is a file. On the AS/400 everything is an object. This has certain connotations to object-oriented programming, but with the AS/400 it's different. The similarity is that when storage is allocated for something that something is of a specific type and only a specific set of programs are allowed to act upon that object. The dissimilarity is that even though the AS/400 supports Java and C++, these objects cannot be inherited like the classes in those languages.
The number of object types is huge and a small subset of them is available to users. The human readable form of the object type is always a three to six character mnemonic preceded by an asterisk. What follows is a short list of the most commonly used objects and their mnemonics:
- *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).
- *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 allow users to prompt for their parameters; can be created with the Command Definition language).
- *MENU: Menu ('nuff said; accessed with the GO command).
- *FILE: File (for both devices, data, and program source; described with DDS; data files can also be created with SQL).
- *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).
- *STMF: Stream file (traditional file that would be familiar to most Unix and Microsoft 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).