第8章  LOOP
RPGプログラマーの為のC言語講座

LOOPの仕方

LOOPの仕方についてRPGとCを比較して見ましょう!

RPGでのLOOPにはどんな命令がありますか?思いつくものをあげてみましょう。

     H            Y/                                    1
     H*------------------------------------------------------------*
     H* PROGRAM-ID    :    LOOP1R                                  *
     H* REMARKS       :    RPGのLOOP
     H* AUTHOR        :    Y.IDE                                   *
     H* DATE-WRITEN   :    98/08/31                                *
     H* VERSION       :    01.00 ORIGINAL                          *
     H*------------------------------------------------------------*
     C           1         DO   10        X       30
     C                     ENDDO
     C*--------------------------------------*
     C                     Z-ADD0         X
     C           X         DOUGE10
     C                     ADD  1         X
     C                     ENDDO
     C*--------------------------------------*     
     C                     Z-ADD0         X
     C           X         DOWLE10
     C                     ADD  1         X
     C                     ENDDO
     C*--------------------------------------*
     C                     DO   *HIVAL
     C                     LEAVE
     C                     ENDDO
     C*--------------------------------------*
     C                     SETON                     LR
     C                     RETRN

RPGでは、DO,DOWxx,DOUxx,DO *HIVIL(永久ループ)などが利用できます。

Cではどうでしょうか?

/*--------------------------------------------------------------*/
/* PROGRAM-ID  : LOOP1C                                         */
/* REMARKS     :ループの仕方             
/* AUTHOR      : Y.Ide                                          */
/* DATE-WRITEN : 98/09/27                                       */
/* VERSION     : 01.00 ORIGINAL                                 */
/*--------------------------------------------------------------*/
#include <stdio.h>

int main(void)
{
  int x;

  /* 1 DO 10 Xに対応*/
  for(x=1; x <= 10; x++){
    /* なんにもしない*/
  }

  /* X DOUGE10に対応*/
  do{
    x++; /* ADD 1 Xと同じ*/
  } while(!(x >= 10));

  /* X DOWLE10に対応*/
  while(x <= 10){
    x++; /* ADD 1 Xと同じ*/
  }

  /* X DO *HIVALに対応*/
  while(1){
    break;
  }

  for(;;){
    break;
  }

}

RPGのDOUxx(DO UNTIL)は、loopを実行してから式の評価を行います。
これは、Cのdo{]while()に対応するのですが、条件が〜までというのは表現できません
そのため、上記では、while(!(x >= 10))の様に!をつけて〜ではないあいだと言う評価をしています