GET SAME

ストラクチャードモード構文

GET SAME [(r)]

レポーティングモード構文

GET SAME [(r)] [operand1 ]

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント:ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BACKOUT TRANSACTION | BEFORE BREAK PROCESSING | DELETE | END TRANSACTION | FIND | GET | GET TRANSACTION DATA | HISTOGRAM | LIMIT | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE | UPDATE

関連機能グループ:データベースへのアクセスと更新


関数

GET SAME ステートメントは、現在処理中のレコードを再度読み込むために使用します。このステートメントは、最初にレコードを読む時点で、存在するオカレンスまたは使用するオカレンスの数や範囲がわからない場合に、データベース配列の値(PE または MU)を参照するために最もよく使用します。

制限

  • GET SAME は Adabas を使用している Natural ユーザーに対してのみ有効です。

  • GET SAME は、Entire System Server では使用できません。

  • UPDATE または DELETE ステートメントは、GET SAME ステートメントを参照してはなりません。これらのステートメントは、最初にレコードを読むときに使用した FINDREAD、または GET ステートメントを参照します。

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1   S A     A U N P     B             ×

構文要素の説明:

構文要素 説明
(r)
ステートメント参照:

表記 (r) は、レコードの最初の読み取りに使用される FIND または READ ステートメントを含むステートメントを指定するために使用します。

(r) の指定がないと、GET SAME ステートメントは稼働している最も内側の処理ループに関連します。

(r) は、参照ステートメント番号またはステートメントラベルとして指定できます。

operand1
参照可能になるフィールド:

operand1 として、GET SAME ステートメントの結果、参照可能になるフィールドを指定します。

注意:
operand1 フィールドを ステートメントで定義している場合、DEFINE DATA は指定できません。

** Example 'GSAEX1': GET SAME                                           
************************************************************************
DEFINE DATA LOCAL                                                       
1 I                (P3)                                                 
1 POST-ADDRESS VIEW OF EMPLOYEES                                        
  2 FIRST-NAME                                                          
  2 NAME                                                                
  2 ADDRESS-LINE   (I:I)                                                
  2 C*ADDRESS-LINE                                                      
  2 POST-CODE                                                           
  2 CITY                                                                
*                                                                       
1 #NAME            (A30)                                                
END-DEFINE                                                              
*                                                                       
FORMAT PS=20                                                            
MOVE 1 TO I                                                             
*                                                                       
READ (10) POST-ADDRESS BY NAME                                          
  COMPRESS NAME FIRST-NAME INTO #NAME WITH DELIMITER ','   
  WRITE // 12T #NAME                                       
  WRITE /  12T ADDRESS-LINE (I.1)                          
  /*                                                       
  IF C*ADDRESS-LINE > 1                                    
    FOR I = 2 TO C*ADDRESS-LINE                            
      GET SAME                      /* READ NEXT OCCURRENCE
      WRITE 12T ADDRESS-LINE (I.1)                         
    END-FOR                                                
  END-IF                                                   
  WRITE / POST-CODE CITY                                   
  SKIP 3                                                   
END-READ                                                   
END

プログラム GSAEX1 の出力:

Page      1                                                  05-01-13  13:23:36
                                                                               
                                                                               
                                                                               
           ABELLAN,KEPA                                                        
                                                                               
           CASTELAN 23-C                                                       
                                                                               
28014      MADRID                                                              
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
           ACHIESON,ROBERT                                                     
                                                                               
           144 ALLESTREE LANE                                                  
           DERBY                                                               
           DERBYSHIRE                                                          
                                                                               
DE3 4TR    DERBY