STORE

#### Search Results

Search

# STORE

#### Structured Mode-Syntax

`STORE` | [`RECORD`] [`IN`] [`FILE`] view-name |  |  |
| [`PASSWORD``=`operand1] |  |  |
| [`CIPHER``=`operand2] |  |  |
|  |  | `USING` |  | `NUMBER` operand3 |
`GIVING`

#### Reporting Mode-Syntax

`STORE` | [`RECORD`] [`IN`] [`FILE`] view-name |  |  |
| [`PASSWORD``=`operand1] |  |  |
| [`CIPHER``=`operand2] |  |  |
|  |  | `USING` |  | `NUMBER` operand3 |
| `GIVING`
|  | [`USING`] `SAME` [`RECORD`] [`AS`] [`STATEMENT` [(r)]] |
|  | `SET` |  | [operand4=operand5]
| `WITH`

Dieses Dokument behandelt folgende Themen:

- Funktion

- Datenbankspezifische Anmerkungen

- Syntax-Beschreibung

- Beispiel

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 SAME` | `GET TRANSACTION DATA` | `HISTOGRAM` | `LIMIT` | `PASSW` | `PERFORM BREAK PROCESSING` | `READ` | `READLOB` | `RETRY` | `UPDATE` | `UPDATELOB`

Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen

## Funktion

Das Statement `STORE` dient dazu, auf einer Datenbank einen Datensatz hinzuzufügen.

## Datenbankspezifische Anmerkungen

Adabas | Die Natural-Systemvariable `*ISN` enthält die Adabas ISN, die dem neuen Datensatz als Ergebnis der Ausführung des `STORE`-Statements zugewiesen wurde. Eine anschließende Referenz auf `*ISN` muss die Statement-Nummer des betreffenden `STORE`-Statements enthalten.
SQL | Mit dem `STORE`-Statement können Sie einer Tabelle eine Reihe hinzufügen. Die `PASSWORD`-, `CIPHER`- und `GIVING NUMBER`-Klauseln sind nicht erlaubt. Das `STORE`-Statement entspricht dem SQL-Statement `INSERT`. Die Natural-Systemvariable `*ISN` steht nicht zur Verfügung.
VSAM | Ist der Datensatz mit einem Primärschlüssel definiert, so muss ein Wert für das Primärschlüssel-Feld angegeben werden. Die Natural-Systemvariable enthält die Adabas-ISN bzw. VSAM-RBA oder -RRN, die dem neuen Datensatz als Ergebnis der `STORE`-Operation zugeteilt wurde. Um den Wert von `*ISN` zu erhalten, müssen Sie das betreffende `STORE`-Statement referenzieren (mittels Statement-Label oder Quellcode- Zeilennummer). Bei VSAM-Dateien gilt `*ISN` nur für ESDS- und RRDS-Dateien.

## Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
operand1 | C | S |  |  |  | A |  |  |  |  |  |  |  |  |  |  |  |  | ja | nein
operand2 | C | S |  |  |  |  |  | N |  |  |  |  |  |  |  |  |  |  | ja | nein
operand3 | C | S |  |  |  |  |  | N | P |  |  | B * |  |  |  |  |  |  | nein | ja
operand4 |  | S | A |  |  | A |  | N | P | I | F | B | D | T | L |  |  |  | nein | nein
operand5 | C | S | A |  |  | A |  | N | P | I | F | B | D | T | L |  |  |  | ja | nein

* Format B von operand3 kann nur mit einer Länge von kleiner gleich 4 benutzt werden.

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung
--- | ---
`view-name` | Als view-name geben Sie den Namen eines Views an, der entweder in einem `DEFINE DATA`-Block oder in einer programmexternen Global oder Local Data Area definiert ist. Im Reporting Mode ist view-name der Name eines DDM, falls kein `DEFINE DATA LOCAL`-Statement benutzt wird.
`PASSWORD=operand1` | Die `PASSWORD`-Klausel gilt nur bei Adabas- und VSAM-Datenbanken. Sie dient dazu, ein Passwort (operand1) anzugeben, um Daten auf einer passwortgeschützten Datei speichern zu können. Das Passwort (operand1) kann als eine alphanumerische Konstante oder als eine alphanumerische Variable angegeben werden. Es kann aus bis zu 8 Zeichen bestehen und darf keine Sonderzeichen oder eingebettete Leerzeichen enthalten. Wenn das Passwort als eine Konstante angegeben wird, muss es in Apostrophen stehen. Weitere Informationen siehe die Statements `FIND` und `PASSW`.
`CIPHER=``operand2` | Die `CIPHER`-Klausel gilt nur bei Adabas- und VSAM-Datenbanken. Diese Klausel wird benutzt, um einen Chiffrierschlüssel (operand2) bei der Aktualisierung von Daten einer Datei anzugeben, die verschlüsselt ist. Der Chiffrierschlüssel (operand2) kann als eine numerische Konstante mit 8 Stellen oder als eine Benutzervariable mit Format/Länge N8 angegeben werden. Weitere Informationen siehe das Statement `FIND`.
`USING NUMBER operand3` oder `GIVING NUMBER operand3` | Diese Klausel kann nur bei Adabas- und VSAM-Datenbanken benutzt werden. Bei VSAM-Datenbanken gilt sie nur für VSAM-RRDS, wobei die vom Benutzer angegebene RRN (Relative Record Number) der ISN entspricht. Mit dieser Klausel können Sie für einen zu speichernden Datensatz eine eigene Adabas-ISN angeben. Ist die angegebene ISN bereits vergeben, wird das Programm abgebrochen und eine entsprechende Fehlermeldung ausgegeben, es sei denn, es ist eine `ON ERROR`-Verarbeitung definiert.
`SET/WITH` `operand4=operand5` | Mit dieser Klausel können im Reporting Mode die Felder angegeben werden, für die Werte gespeichert werden sollen. Jedes in der Datei definierte Feld, das in der `SET`-Klausel nicht angegeben wird, erhält in dem neuen Datensatz einen Nullwert. Diese Klausel ist nicht erlaubt, wenn ein `DEFINE DATA`-Statement verwendet wird, da sich in diesem Fall das `STORE`-Statement immer auf den gesamten im `DEFINE DATA`-Statement definierten View bezieht.
`USING SAME (r)` | Diese Klausel bewirkt im Reporting Mode, dass dieselben Feldwerte, die mit dem `FIND`-, `GET`- oder `READ`-Statement gelesen wurden, welches von dem `STORE`-Statement referenziert wird, als Werte des neuen Datensatzes gespeichert werden. Das Statement kann mit der Notation `(r)` mittels Quellcode-Zeilennummer oder Statement-Label referenziert werden. Diese Klausel ist nicht erlaubt, wenn ein `DEFINE DATA`-Statement verwendet wird, da sich in diesem Fall das `STORE`-Statement immer auf den gesamten im `DEFINE DATA`-Statement definierten View bezieht.

## Beispiel

    ** Example 'STOEX1S': STORE  (structured mode)
    **
    ** CAUTION: Executing this example will modify the database records!
    ************************************************************************
    DEFINE DATA LOCAL
    1 EMPL-VIEW VIEW OF EMPLOYEES
      2 PERSONNEL-ID
      2 NAME
      2 FIRST-NAME
      2 MAR-STAT
      2 BIRTH
      2 CITY
      2 COUNTRY
    *
    1 #PERSONNEL-ID (A8)
    1 #NAME         (A20)
    1 #FIRST-NAME   (A15)
    1 #BIRTH-D      (D)
    1 #MAR-STAT     (A1)
    1 #BIRTH        (A8)
    1 #CITY         (A20)
    1 #COUNTRY      (A3)
    1 #CONF         (A1)
    END-DEFINE
    *
    REPEAT
      INPUT 'ENTER A PERSONNEL ID AND NAME (OR ''END'' TO END)' //
            'PERSONNEL-ID : ' #PERSONNEL-ID  //
            'NAME         : ' #NAME          /
            'FIRST-NAME   : ' #FIRST-NAME
      /*
      /*  VALIDATE ENTERED DATA
      /*
      IF #PERSONNEL-ID = 'END' OR #NAME = 'END'
        STOP
      END-IF
      IF #NAME = ' '
        REINPUT WITH TEXT 'ENTER A LAST-NAME' MARK 2 AND SOUND ALARM
      END-IF
      IF #FIRST-NAME = ' '
        REINPUT WITH TEXT 'ENTER A FIRST-NAME' MARK 3 AND SOUND ALARM
      END-IF
      /*
      /*  ENSURE PERSON IS NOT ALREADY ON FILE
      /*
      FIND NUMBER EMPL-VIEW WITH PERSONNEL-ID =  #PERSONNEL-ID
      IF *NUMBER > 0
        REINPUT 'PERSON WITH SAME PERSONNEL-ID ALREADY EXISTS'
                 MARK 1 AND SOUND ALARM
      END-IF
      MOVE 'N' TO #CONF
      /*
      /*  GET FURTHER INFORMATION
      /*
      INPUT
        'ADDITIONAL PERSONNEL DATA'                        ////
        'PERSONNEL-ID             :' #PERSONNEL-ID (AD=IO) /
        'NAME                     :' #NAME         (AD=IO) /
        'FIRST-NAME               :' #FIRST-NAME   (AD=IO) ///
        'MARITAL STATUS           :' #MAR-STAT             /
        'DATE OF BIRTH (YYYYMMDD) :' #BIRTH                /
        'CITY                     :' #CITY                 /
        'COUNTRY (3 CHARACTERS)   :' #COUNTRY              //
        'ADD THIS RECORD (Y/N)    :' #CONF          (AD=M)
      /*
      /*   ENSURE REQUIRED FIELDS CONTAIN VALID DATA
      /*
      IF NOT (#MAR-STAT = 'S'  OR = 'M' OR = 'D' OR = 'W')
        REINPUT TEXT 'ENTER VALID MARITAL STATUS  S=SINGLE ' -
                     'M=MARRIED D=DIVORCED W=WIDOWED' MARK 1
      END-IF
      IF NOT (#BIRTH = MASK(YYYYMMDD) AND #BIRTH = MASK(1582-2699))
        REINPUT TEXT 'ENTER CORRECT DATE' MARK 2
      END-IF
      IF #CITY  = ' '
        REINPUT TEXT 'ENTER A CITY NAME' MARK 3
      END-IF
      IF #COUNTRY = ' '
        REINPUT TEXT 'ENTER A COUNTRY CODE' MARK 4
      END-IF
      IF NOT (#CONF = 'N' OR= 'Y')
        REINPUT TEXT 'ENTER Y (YES) OR N (NO)' MARK 5
      END-IF
      IF #CONF = 'N'
        ESCAPE TOP
      END-IF
      /*
      /*  ADD THE RECORD
      /*
      MOVE EDITED #BIRTH TO #BIRTH-D (EM=YYYYMMDD)
      /*
      EMPL-VIEW.PERSONNEL-ID := #PERSONNEL-ID
      EMPL-VIEW.NAME         := #NAME
      EMPL-VIEW.FIRST-NAME   := #FIRST-NAME
      EMPL-VIEW.MAR-STAT     := #MAR-STAT
      EMPL-VIEW.BIRTH        := #BIRTH-D
      EMPL-VIEW.CITY         := #CITY
      EMPL-VIEW.COUNTRY      := #COUNTRY
      /*
      STORE RECORD IN EMPL-VIEW
      /*
      END OF TRANSACTION
      /*
      WRITE NOTITLE 'RECORD HAS BEEN ADDED'
      /*
    END-REPEAT
    END

Ausgabe des Programms `STOEX1S`:

    ENTER A PERSONNEL ID AND NAME (OR 'END' TO END)

    PERSONNEL-ID : 90001100

    NAME         : JONES
    FIRST-NAME   : EDWARD

Nach der Eingabe und Bestätigung der Personal-Schlüsseldaten werden zusätzliche Personal-Daten zur Eingabe angezeigt:

    ADDITIONAL PERSONNEL DATA

    PERSONNEL-ID             : 90001100
    NAME                     : JONES
    FIRST-NAME               : EDWARD

    MARITAL STATUS           :
    DATE OF BIRTH (YYYYMMDD) :
    CITY                     :
    COUNTRY (3 CHARACTERS)   :

    ADD THIS RECORD (Y/N)    : N

Äquivalentes Reporting-Mode-Beispiel: `STOEX1R`.

### On this page

- Funktion
- Datenbankspezifische Anmerkungen
- Syntax-Beschreibung
- Beispiel