Example of Using a Special File

Figure 1 shows how to use the RPG device name SPECIAL in a program. In this example, a file description found in the file EXCPTN is associated with the device SPECIAL.

Figure 1. SPECIAL Device
     *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
     FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++++++++++++
     FEXCPTN    O    F   20        SPECIAL PGMNAME('USERIO')
     F                                     PLIST(SPCL)
     *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
     DName+++++++++++ETDsFrom+++To/L+++IDc.Functions++++++++++++++++++++++++++++
     D OUTBUF          DS
     D  FLD                    1     20

     *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
     CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
     C     SPCL          PLIST
     C                   PARM                    FLD1

     C                   MOVEL     'HELLO'       FLD
     C                   MOVE      '1'           FLD1              1
     C                   WRITE     EXCPTN        OUTBUF
     C                   MOVE      '2'           FLD1              1
     C                   WRITE     EXCPTN        OUTBUF
     C                   SETON                                        LR

Figure 2 shows the user-written program USERIO.

Figure 2. User-written program USERIO
     *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
     DName+++++++++++ETDsFrom+++To/L+++IDc.Functions++++++++++++++++++++++++++++
     D ERROR           S              5S 0
     *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
     CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....

      *----------------------------------------------------------------*
      * The first 4 parameters are ILE RPG created parameter list.     *
      * The rest are defined by the programmer-defined PLIST.          *
      *----------------------------------------------------------------*
     C     *ENTRY        PLIST
     C                   PARM                    OPTION            1
     C                   PARM                    STATUS            1
     C                   PARM                    ERROR             5 0
     C                   PARM                    AREA             20
     C                   PARM                    FLD1              1

      *----------------------------------------------------------------*
      * The user written program will perform the file I/O according   *
      * to the option passed.                                          *
      *----------------------------------------------------------------*
     C                   SELECT
     C                   WHEN      OPTION = 'O'
     C*  perform OPEN operation
     C                   WHEN      OPTION = 'W'
     C*  perform WRITE operation
     C                   WHEN      OPTION = 'C'
     C*  perform CLOSE operation
     C                   ENDSL
     C                   RETURN

The I/O operations for the SPECIAL device are controlled by the user-written program USERIO. The parameters specified for the programmer-defined PLIST(SPCL) are added to the end of the RPG-created parameter list for the SPECIAL device. The programmer-specified parameters can be accessed by the user ILE RPG program and the user-written routine USERIO; whereas the RPG-created parameter list can be accessed only by internal ILE RPG logic and the user-written routine.