|This article does not cite any references or sources. (December 2009)|
AS/400 objects share similarities with objects in object-oriented programming, but there are differences as well. There are similarities in 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. There are differences in that even though the AS/400 supports Java and C++, AS/400 objects cannot be inherited like the classes in those languages. Another difference is that the set of object types in OS/400 (the AS/400's operating system) is fixed by IBM, and only IBM has the ability to create new ones.
The number of object types is huge and a small subset of them are 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 more 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 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 AS/400 Control Language for more information.
- *MENU: Menu (accessed with the GO command).
- *FILE: File (AS/400 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).
Creating an object usually (but not always) involves a command that begins with the mnemonic "CRT". So, to create a job description you would prompt the CRTJOBD command. User profiles would be created with the CRTUSRPRF command. Similarly changing objects is done by prompting commands preceded by "CHG" (CHGJOBD, CHGUSRPRF, etc.), deleting an object uses "DLT" (DLTJOBD, DLTUSRPRF, etc.), displaying an object uses "DSP" (DSPJOBD, DSPUSRPRF, etc.), and working with a set of objects uses "WRK" (WRKJOBD, WRKUSRPRF, etc.). To view a generic set of objects in a library use the DSPOBJD command. WRKOBJ can be used to view objects in multiple libraries. The AS/400 command structure focuses on ease of use. In order to view all the objects that the verb portion of an AS/400 command can work ("WRK") upon the "go cmdWRK" where "WRK" may be any of the verbs current and future "CHG","DLT","DSP","EDT","INZ","PRT" etc. Parameters for the command can be displayed by simply typing the command name and pressing F4 or by typing the command name on an AS/400 command line. This will prompt a standard SAA panel providing prompt information for each parameter the command can accept. The command string can be displayed at any point during prompting by pressing F1u2, which if used to exit from the command prompting can be utilized by the F9=Retrieve previous command. A help summary for the command and its parameters can be obtained by pressing F1.
This command structure and strict adherence to the S.A.A. standards make the AS/400 extremely easy to use from at command level and also to develop source files containing commands. Commands may be executed interactively or placed in text files and executed in sequence or can be compiled into an AS/400 object of type *PGM, with a type-attribute of CLP.