GET SAME

Structured Mode-Syntax

GET SAME [(r)]

Reporting Mode-Syntax

GET SAME [(r)] [operand1 ]

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Verwandte Statements: 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

Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen


Funktion

Das Statement GET SAME dient dazu, einen Datensatz, der gerade verarbeitet wird, erneut zu lesen. Das Statement wird in der Regel dazu verwendet, Werte von Datenbank-Arrays (Periodengruppen oder multiplen Feldern) zu erhalten, falls die Nummer(n) und der Bereich der vorhandenen bzw. gewünschten Ausprägung(en) nicht bekannt war, als der Datensatz zum erstenmal gelesen wurde.

Einschränkungen

  • Das Statement GET SAME ist nur beim Zugriff auf Adabas- oder VSAM-Datenbanken gültig.

  • Mit Entire System Server ist dieses Statement nicht verfügbar.

  • Bei VSAM-Datenbanken gilt GET SAME nur für ESDS und RRDS. Für ESDS muss die RBA in einer numerischen Benutzervariablen enthalten sein oder als Ganzzahl-Konstante angegeben werden. Dasselbe gilt für RRDS, außer dass hier statt der RBA die RRN angegeben werden muss.

  • Bei einem UPDATE- oder DELETE-Statement darf keine Referenzierung auf ein GET SAME-Statement erfolgen; vielmehr sollten diese Statements das FIND-, READ- oder GET-Statement referenzieren, mit dem der betreffende Datensatz ursprünglich gelesen wurde.

Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1   S A     A U N P     B             nein ja

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
(r)
Statement-Referenz:

Die Notation (r) wird benutzt, um das Statement anzugeben, das das FIND- oder READ-Statement enthält, mit dem der Datensatz zum erstenmal gelesen wurde.

Falls keine Referenzierung erfolgt, bezieht sich das GET SAME-Statement auf die innerste aktive Verarbeitungsschleife.

(r) kann als ein Statement-Label oder eine Quellcode- Zeilennummer angegeben werden.

operand1
Angabe der Felder:

Als operand1 geben Sie das Feld bzw. die Felder an, deren Werte Sie mit dem GET SAME-Statement erhalten wollen.

Anmerkung:
operand1 kann nicht angegeben werden, wenn das Feld in einem DEFINE DATA-Statement definiert ist.

Beispiel

** 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  
 
                                                  

Ausgabe des Programms 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