V7R1からは、RTNPARMオプションをプロシージャに使用する事で、割合大きめサイズの戻り値を返す際にパフォーマンスで有利になるようなので検証してみました。
特に、戻り値の最大サイズは大きいが、実際に返す値が小さい時に有利に働くようです。
サンプルは、1000万回ループで、大きめサイズの戻り値に、3バイトの文字列を返してみました。

USR407.rpgle
     H****************************************************************
     H*-‚------------------------------*
     H*-‚---<<日付・著作権    >>-----*
     H*-‚------------------------------*
     H DATEDIT(*YMD)
     H COPYRIGHT('(C) ushiday - ')
     H*-‚------------------------------*
     H*-‚---<<コンパイル条件  >>-----*
     H*-‚------------------------------*
     H DFTACTGRP(*NO) ACTGRP(*NEW)
     D*
     D print           PR                  EXTPROC('print')                     標準出力関数
     D    msg                      1000A   VARYING CONST
     D*定数
     D MAX_COUNT       C                   10000000
     D*変数
     D RTN_STR         S          65535A   INZ
     D*カウンタ
     D IX              S              9S 0 INZ
     D*タイムスタンプ
     D WTIMESTAMP_S    S               Z
     D WTIMESTAMP_E    S               Z
     C*-‚------------------------------*
     C*-‚---<<メインルーチン  >>-----*
     C*-‚------------------------------*
      /FREE

           print ( '---- PROGRAM START ----')    ;

           WTIMESTAMP_S = %TIMESTAMP()   ;
           FOR  IX = 1 TO MAX_COUNT;
               RTN_STR = GET_STRING1();
           ENDFOR  ;
           WTIMESTAMP_E = %TIMESTAMP()   ;

           print ( 'RTNPARMなしは'
                   + %CHAR(%DIFF(WTIMESTAMP_E : WTIMESTAMP_S : *SECONDS ) )
                   + '秒かかりました');

           WTIMESTAMP_S = %TIMESTAMP()   ;
           FOR  IX = 1 TO MAX_COUNT;
               RTN_STR = GET_STRING2();
           ENDFOR  ;
           WTIMESTAMP_E = %TIMESTAMP()   ;

           print ( 'RTNPARMありは'
                   + %CHAR(%DIFF(WTIMESTAMP_E : WTIMESTAMP_S : *SECONDS ) )
                   + '秒かかりました');

           EXSR @END  ;

           //終了
           BEGSR   @END   ;
                print ( '---- PROGRAM END   ----')    ;

               *INLR = *ON    ;
               RETURN        ;
           ENDSR         ;

      /END-FREE
     P****************************************************************
     P** < GET_STRING1       >: 文字列取得RTNPARMなし           **
     P****************************************************************
     P GET_STRING1     B
     D GET_STRING1     PI         65535A   VARYING
     D*-š---<<変数定義 >>-----*
      /FREE
           RETURN 'ABC'          ;
      /END-FREE
     P                 E
     P****************************************************************
     P** < GET_STRING2       >: 文字列取得RTNPARMあり           **
     P****************************************************************
     P GET_STRING2     B
     D GET_STRING2     PI         65535A   VARYING
     D                                     RTNPARM
     D*-š---<<変数定義 >>-----*
      /FREE
           RETURN 'ABC'          ;
      /END-FREE
     P                 E

●実行結果
2015-12-11_184403.png

実行時間は、約半分になりました。IFSからストリームファイルを読み込む時などに役立ちそうですね。