STORE

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

STORE [RECORD] [IN] [FILE] view-name      
  [PASSWORD=operand1]      
  [CIPHER=operand2]      
 

USING

NUMBER operand3

GIVING

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

STORE [RECORD] [IN] [FILE] view-name      
  [PASSWORD=operand1]      
  [CIPHER=operand2]      
 

USING

NUMBERoperand3

  GIVING
 

[USING] SAME [RECORD] [AS] [STATEMENT [(r)]]

 

SET

[operand4=operand5]
  WITH

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

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

関連ステートメント: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 | RETRY | UPDATE |

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


関数

STORE ステートメントは、データベースにレコードを追加するために使用します。

データベース固有の考慮事項

Adabas Natural システム変数 *ISN には、STORE ステートメントの実行の結果として新しいレコードに割り当てられた Adabas ISN が含まれます。*ISN を後で参照するには、関連する STORE ステートメントのステートメント番号が含まれている必要があります。
SQL

このステートメントは、SQL テーブルに行を追加するために使用できます。PASSWORDCIPHER および GIVING NUMBER 節は使用できません。STORE ステートメントは、SQL の INSERT ステートメントに相当します。

Natural システム変数 *ISN は使用できません。

XML

このステートメントは、データベースに XML オブジェクトを追加するために使用できます。PASSWORDCIPHER および GIVING NUMBER 節は使用できません。

Tamino の場合、Natural システム変数 *ISN には、STORE ステートメントの実行の結果として新しいレコードに割り当てられた XML オブジェクト ID が含まれます。*ISN を後で参照するには、関連する STORE ステートメントのステートメント番号が含まれている必要があります。

構文説明

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

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1 C S       A                         ×
operand2 C S           N                     ×
operand3 C S           N P     B *             ×
operand4   S A     A U N P I F B D T L       × ×
operand5 C S A     A U N P I F B D T L       ×

* operand3 のフォーマット B は、4 以下の長さでのみ使用できます。

構文要素の説明:

構文要素 説明
view-name
ビュー名:

view-name としてビューの名前を指定します。この名前は、DEFINE DATA ステートメント内、あるいはプログラム外のグローバルデータエリアまたはローカルデータエリアに事前に定義しておく必要があります。

レポーティングモードでは、DEFINE DATA LOCAL ステートメントが使用されていない場合、DDM の名前は view-name です。

PASSWORD=operand1
PASSWORD 節:

PASSWORD 節は、Adabas データベースに対してのみ適用可能です。

この節は、パスワード保護されたファイルのデータを更新するときのパスワード(operand1)の指定に使用します。パスワード(operand1)は、英数字定数または英数字変数として指定できます。最大 8 文字から成り、特殊文字または埋め込み空白は使用できません。パスワードを定数として指定する場合は、一重引用符で囲む必要があります。

詳細については、FIND ステートメントおよび PASSW ステートメントを参照してください。

CIPHER=operand2
CIPHER 節:

CIPHER 節は、Adabas データベースに対してのみ適用可能です。

この節は、暗号化されたファイルのデータを更新するときのサイファキー(operand2)の指定に使用します。サイファキー(operand2)は、数値定数(8 桁)またはユーザー定義変数(フォーマット/長さ N8)として指定できます。

詳細については、FIND ステートメントを参照してください。

USING NUMBER operand3
USING NUMBER 節:

この節は、Adabas データベースでのみ使用できます。

GIVING NUMBER operand3
GIVING NUMBER 節:

この節は、ユーザー指定の Adabas ISN を持つレコードを保存するために使用します。指定した ISN を持つレコードがすでに存在しているとエラーメッセージが返され、ON ERROR 処理の指定がない場合、プログラムの実行は終了します。

SET/WITHoperand4=operand5
SET/HOLD 節:

SET/WITH は、レポーティングモードで値を与えるフィールドを指定するために使用します。ファイルに定義されているフィールドで、SET 節で指定されないフィールドは、新しいレコード内で空値となります。

この節は、DEFINE DATA ステートメントを使用している場合は許可されません。STORE ステートメントは DEFINE DATA ステートメント内の定義に従って常にビュー全体を参照するからです。

USING SAME (r)
USING SAME 節:

レポーティングモードでは、この節を使用して、STORE ステートメントが参照するステートメント(FINDGETREAD)で読み込まれたフィールドと同じフィールドが新しいレコードとして追加されることを示します。

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

この節は、DEFINE DATA ステートメントを使用している場合は許可されません。STORE ステートメントは DEFINE DATA ステートメント内の定義に従って常にビュー全体を参照するからです。

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

プログラム STOEX1S の出力:

ENTER A PERSONNEL ID AND NAME (OR 'END' TO END)
                                               
PERSONNEL-ID : 90001100           
                                               
NAME         : JONES                        
FIRST-NAME   : EDWARD

人事キーデータを入力および確定した後、追加の人事データフィールドが入力用に表示されます。

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

レポーティングモードの例については、次のプログラムを参照してください:STOEX1R