DL/I のコンテキスト内で add ステートメントを使用すると、このステートメントは 1 つまたは一連のセグメントを階層データベースに追加します。
add ステートメントを使用して、DLISegment レコードの動的配列から複数のセグメントを単一の DL/I データベースに配置することもできます。

add myCustomer, myLocation, myOrder;
ISRT STSCCST*D (STQCCNO = :myCustomer.customerNo)
STSCLOC (STQCLNO = :myLocation.locationNo)
STPCORD
//hostVarQualifier プロパティーを使用して DLI セグメント・レコードを定義する
Record CustomerRecord type DLISegment
{ segmentName="STSCCST", keyItem="customerNo", hostVarQualifier="myCustomer" }
...
end
Record LocationRecord type DLISegment
{ segmentName="STSCLOC", keyItem="locationNo", hostVarQualifier="myLocation" }
...
end
Record OrderRecord type DLISegment
{ segmentName="STPCORD", keyItem="orderDateNo", hostVarQualifier="myOrder" }
...
end
//create variables for the records
myCustomer CustomerRecord;
myLocation LocationRecord;
myOrder OrderRecord;
//セグメント検索パラメーターをビルドする
myCustomer.customerNo = "005001";
myLocation.locationNo = "000022";
//オーダー・レコード内のフィールドに入力する
fillOrder(myOrder);
//新規のオーダー・レコードを追加する
try
add myOrder;
onException(dex DLIException)
myErrorHandler(dex);
end
ISRT STSCCST (STQCCNO = :myCustomer.customerNo)
STSCLOC (STQCLNO = :myLocation.locationNo)
STPCORD
顧客とロケーションの修飾済みのセグメント検索パラメーター (SSA) は、新規のオーダー・セグメントの親セグメントを識別します。 DL/I は、そのセグメント orderDateNo (STQCODN) に対して keyItem フィールドで決められた場所に新規のオーダー・セグメントを追加します。
if (myOrder is unique)
...
end
可能性のあるランタイム・エラーには、以下のようなものがあります。