C と RPG (for ループ)

C で for を使用してループ処理を書くとだいたいこんなかんじになりますが、

      for(i = 0; i < n; i++)                        
       for(j = 0; j < n-1; j++)                    
        If(Array[j+1] < Array[j]) {           
          SaveElem = Array[j] ;              
          Array[j] = Array[j+1] ;            
          Array[j+1] = SaveElem ;            
        }

これを Free-Format RPG で書くとこんなかんじになります。

ほぼ変わらないというか、定型句としてそのまま覚えてしまってもいいですし、C の場合は実際には i = 0 と i < n と i++ という複数の処理からできているのが i = 1 to n と簡潔になっているとも言えそうなので、初心者などにはわかりやすいかもしれませんね。

/Free                                        
      For i =1 to n ;                        
       For j = 1 to n-1 ;                    
        If Array(j+1) < Array(j) ;           
          SaveElem = Array(j) ;              
          Array(j) = Array(j+1) ;            
          Array(j+1) = SaveElem ;            
        EndIf ;                              
       EndFor ;                              
      EndFor ;                               
/End-Free

ちなみに For i = %len(Name) downto x ; といったように数字を減らしていくことによるループも可能です。


センス・オブ・プログラミング!」という本にに載っていた for を使用したサンプルを書き直してみました。

こちらが本に載っていた C のプログラムの一部分です。

     for (i = 0; i < count; i++) {                                                     
      printf(" 三角形[%d]の面積は..%lf\n", i, area_array[i]);   
     }

こちらが RPG に書き直したものになります。

今回は一番最初の例のような二重ループではなく単純なループなのでわかりやすいと思いますが、あまり変わらない、というか iSeries のユーザーでよくあるようなプログラミングの初心者にはやっぱりこっちの方がわかりやすいのではないかと思います。

     For i = 1 to count ;                                                     
      dsply  (' 三角形 ' + %char(i) + ' の面積は ..'+ %char(area_array(i)))   ;   
     EndFor ;

[Top Pageに戻る]

Ads by TOK2