--- /dev/null
+ESFormat-Update
+{Z39-50-extendedService Update (5) revisions (1) revision-1 (1)} DEFINITIONS ::=
+ -- oid is 1.2.840.10003.9.5.1.1
+BEGIN
+IMPORTS DiagRec, InternationalString
+FROM Z39-50-APDU-1995;
+Update ::= CHOICE{
+ esRequest [1] IMPLICIT SEQUENCE{
+ toKeep [1] OriginPartToKeep,
+ notToKeep [2] OriginPartNotToKeep},
+ taskPackage [2] IMPLICIT SEQUENCE{
+ originPart [1]
+ OriginPartToKeep,
+ targetPart [2] TargetPart}}
+
+OriginPartToKeep ::= SEQUENCE{
+action [1] IMPLICIT INTEGER{
+ recordInsert (1),
+ recordReplace (2),
+ recordDelete (3),
+ elementUpdate (4),
+ specialUpdate (5)},
+ databaseName [2] IMPLICIT InternationalString,
+ schema [3] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
+ elementSetName [4] IMPLICIT InternationalString OPTIONAL,
+ actionQualifier [5] IMPLICIT EXTERNAL OPTIONAL}
+
+OriginPartNotToKeep ::= SuppliedRecords
+
+TargetPart ::= SEQUENCE{
+ updateStatus [1] IMPLICIT INTEGER{
+ success (1),
+ partial (2),
+ failure (3)},
+ globalDiagnostics [2] IMPLICIT SEQUENCE OF
+ DiagRec OPTIONAL,
+ -- These are non-surrogate
+ -- diagnosticsrelating to the task,
+ -- not to individual records.
+ taskPackageRecords [3] IMPLICIT SEQUENCE OF
+TaskPackageRecordStructure
+ -- There should be a
+ -- TaskPackageRecordStructure
+ -- for every record supplied.
+ -- The target should create
+ -- such a structure for every
+ -- record immediately upon
+ -- creating the task package
+ -- to include correlation
+ -- information and status.
+ -- The record itself would not
+ -- be included until processing
+ -- for that record is complete.
+ }
+
+-- Auxiliary definitions for Update
+SuppliedRecords ::= SEQUENCE OF SEQUENCE{
+ recordId [1] CHOICE{
+ number [1] IMPLICIT INTEGER,
+ string [2] IMPLICIT InternationalString,
+ opaque [3] IMPLICIT OCTET STRING} OPTIONAL,
+ supplementalId [2] CHOICE{
+ timeStamp [1] IMPLICIT GeneralizedTime,
+ versionNumber [2] IMPLICIT InternationalString,
+ previousVersion [3] IMPLICIT EXTERNAL} OPTIONAL,
+ correlationInfo [3] IMPLICIT CorrelationInfo OPTIONAL,
+ record [4] IMPLICIT EXTERNAL}
+
+CorrelationInfo ::= SEQUENCE{
+ -- origin may supply one or both for any record:
+ note [1] IMPLICIT InternationalString OPTIONAL,
+ id [2] IMPLICIT INTEGER OPTIONAL}
+
+TaskPackageRecordStructure ::= SEQUENCE{
+ recordOrSurDiag [1] CHOICE {
+ record [1] IMPLICIT EXTERNAL,
+ -- Choose 'record' if
+ -- recordStatus is 'success', and
+ -- elementSetName was supplied.
+
+ surrogateDiagnostics [2] IMPLICIT
+ SEQUENCE OF DiagRec
+ -- Choose 'SurrogateDiagnostics', if
+ -- RecordStatus is failure.
+ } OPTIONAL,
+ -- The parameter recordOrSurDiag
+ -- will thus be omitted only if
+ -- 'elementSetName' was omitted and
+ -- recordStatus is 'success'; or
+ --if record status is 'queued'
+ -- or in 'process'.
+ correlationInfo [2] IMPLICIT
+ CorrelationInfo OPTIONAL,
+ -- This should be included
+ -- if it was supplied by the origin.
+ recordStatus [3] IMPLICIT INTEGER{
+ success (1),
+ queued (2),
+ inProcess (3),
+ failure (4)},
+ supplementalDiagnostics [4] IMPLICIT
+ SEQUENCE OF DiagRec OPTIONAL}
+END