Fehlerverarbeitung initial

This commit is contained in:
2026-09-13 16:51:29 +02:00
parent 7a2671ea24
commit feaaa1b845
4 changed files with 338 additions and 99 deletions
+17
View File
@@ -64,6 +64,23 @@ dcl-s MD_DeviceAllocateMinimum int(10) inz(2) const;
dcl-s MD_SaveFormatAuto int(10) inz(-2) const; dcl-s MD_SaveFormatAuto int(10) inz(-2) const;
dcl-s MD_SaveFormatSerial int(10) inz(-1) const; dcl-s MD_SaveFormatSerial int(10) inz(-1) const;
dcl-s MD_SaveFormatParallel int(10) inz(0) const; dcl-s MD_SaveFormatParallel int(10) inz(0) const;
//=====================================================================
// Error Information
//
// Returned by all public MEDDFN procedures.
//=====================================================================
dcl-ds MD_Error_T qualified template;
HasError ind;
MessageID char(7);
MessageData char(128);
end-ds;
dcl-s MD_VOLUME_ID_LENGTH int(5) inz(6) const; dcl-s MD_VOLUME_ID_LENGTH int(5) inz(6) const;
//===================================================================== //=====================================================================
+14 -3
View File
@@ -14,18 +14,29 @@ dcl-pr MD_CreateMediaDefinition;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
dcl-pr MD_DeleteMediaDefinition; dcl-pr MD_DeleteMediaDefinition;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
end-pr; Error
likeds(MD_Error_T);
dcl-pr MD_RetrieveMediaDefinition; end-pr;
dcl-pr MD_RetrieveMediaDefinition;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T); likeds(MD_MediaDefinition_T);
end-pr; Error
likeds(MD_Error_T);
end-pr;
+232 -33
View File
@@ -81,6 +81,9 @@ dcl-pr MD_CreateMediaDefinition ;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
@@ -89,6 +92,9 @@ dcl-pr MD_DeleteMediaDefinition ;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
@@ -97,6 +103,9 @@ dcl-pr MD_RetrieveMediaDefinition ;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T); likeds(MD_MediaDefinition_T);
Error
likeds(MD_Error_T);
end-pr; end-pr;
@@ -106,11 +115,28 @@ end-pr;
// //
//===================================================================== //=====================================================================
dcl-pr MD_SetError;
Error
likeds(MD_Error_T);
MessageID
char(7) const;
MessageData
char(128) const;
end-pr;
dcl-pr MD_ValidateCreate; dcl-pr MD_ValidateCreate;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
@@ -119,6 +145,9 @@ dcl-pr MD_ValidateDelete;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
@@ -127,6 +156,9 @@ dcl-pr MD_ValidateRetrieve;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
@@ -135,6 +167,9 @@ dcl-pr MD_CheckApiError;
ApiError ApiError
likeds(MD_APIError_T) const; likeds(MD_APIError_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
dcl-pr MD_SendMessage; dcl-pr MD_SendMessage;
@@ -181,6 +216,9 @@ dcl-pr MD_CheckDuplicateDevices;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
@@ -189,6 +227,9 @@ dcl-pr MD_CheckDuplicateSequences;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pr; end-pr;
@@ -207,6 +248,9 @@ dcl-proc MD_CreateMediaDefinition export;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pi; end-pi;
@@ -232,7 +276,21 @@ dcl-proc MD_CreateMediaDefinition export;
// Validate // Validate
//-------------------------------------------------------------- //--------------------------------------------------------------
MD_ValidateCreate(MediaDefinition); clear Error;
MD_ValidateCreate(
MediaDefinition :
Error);
if Error.HasError;
MD_SendEscape(
Error.MessageID :
Error.MessageData);
return;
endif;
//-------------------------------------------------------------- //--------------------------------------------------------------
@@ -303,7 +361,19 @@ dcl-proc MD_CreateMediaDefinition export;
// dump(a); // dump(a);
MD_CheckApiError(ApiError); MD_CheckApiError(
ApiError :
Error);
if Error.HasError;
MD_SendEscape(
Error.MessageID :
Error.MessageData);
return;
endif;
end-proc; end-proc;
@@ -321,6 +391,9 @@ dcl-proc MD_DeleteMediaDefinition export;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pi; end-pi;
@@ -334,7 +407,21 @@ dcl-proc MD_DeleteMediaDefinition export;
MD_ValidateDelete(MediaDefinition); clear Error;
MD_ValidateDelete(
MediaDefinition :
Error);
if Error.HasError;
MD_SendEscape(
Error.MessageID :
Error.MessageData);
return;
endif;
QualifiedObject.ObjectName = QualifiedObject.ObjectName =
@@ -355,7 +442,19 @@ dcl-proc MD_DeleteMediaDefinition export;
ApiError); ApiError);
MD_CheckApiError(ApiError); MD_CheckApiError(
ApiError :
Error);
if Error.HasError;
MD_SendEscape(
Error.MessageID :
Error.MessageData);
return;
endif;
end-proc; end-proc;
@@ -373,6 +472,9 @@ dcl-proc MD_RetrieveMediaDefinition export;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T); likeds(MD_MediaDefinition_T);
Error
likeds(MD_Error_T);
end-pi; end-pi;
@@ -392,7 +494,21 @@ dcl-proc MD_RetrieveMediaDefinition export;
dcl-s ApiReceiverLength int(10); dcl-s ApiReceiverLength int(10);
MD_ValidateRetrieve(MediaDefinition); clear Error;
MD_ValidateRetrieve(
MediaDefinition :
Error);
if Error.HasError;
MD_SendEscape(
Error.MessageID :
Error.MessageData);
return;
endif;
QualifiedObject.ObjectName = QualifiedObject.ObjectName =
@@ -422,19 +538,60 @@ dcl-proc MD_RetrieveMediaDefinition export;
ApiError); ApiError);
MD_CheckApiError(ApiError); MD_CheckApiError(
ApiError :
Error);
// TODO: if Error.HasError;
// Parser folgt mit MEDDFNPRS
// MD_ParseRetrieveBuffer( MD_SendEscape(
Error.MessageID :
Error.MessageData);
// Receiver.Data : return;
// MediaDefinition); endif;
MD_ParseRetrieveBuffer(
Receiver.Data :
MediaDefinition);
end-proc; end-proc;
//=====================================================================
//
// MD_SetError
//
// Stores the first error for the public procedure.
//
//=====================================================================
dcl-proc MD_SetError;
dcl-pi *n;
Error
likeds(MD_Error_T);
MessageID
char(7) const;
MessageData
char(128) const;
end-pi;
if not Error.HasError;
Error.HasError = *on;
Error.MessageID = MessageID;
Error.MessageData = MessageData;
endif;
end-proc;
//===================================================================== //=====================================================================
// //
// MD_ValidateCreate // MD_ValidateCreate
@@ -448,6 +605,9 @@ dcl-proc MD_ValidateCreate;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pi; end-pi;
@@ -462,7 +622,8 @@ dcl-proc MD_ValidateCreate;
if %trim(MediaDefinition.MediaDefinitionName) = ''; if %trim(MediaDefinition.MediaDefinitionName) = '';
MD_SendEscape( MD_SetError(
Error :
'MDF0001' : 'MDF0001' :
*blanks); *blanks);
@@ -475,7 +636,8 @@ dcl-proc MD_ValidateCreate;
if %trim(MediaDefinition.LibraryName) = ''; if %trim(MediaDefinition.LibraryName) = '';
MD_SendEscape( MD_SetError(
Error :
'MDF0002' : 'MDF0002' :
*blanks); *blanks);
@@ -490,7 +652,8 @@ dcl-proc MD_ValidateCreate;
or MediaDefinition.NumberOfDevices > or MediaDefinition.NumberOfDevices >
MD_MaxDeviceDefinitions; MD_MaxDeviceDefinitions;
MD_SendEscape( MD_SetError(
Error :
'MDF0003' : 'MDF0003' :
*blanks); *blanks);
@@ -514,7 +677,8 @@ dcl-proc MD_ValidateCreate;
other; other;
MD_SendEscape( MD_SetError(
Error :
'MDF0004' : 'MDF0004' :
*blanks); *blanks);
@@ -538,7 +702,8 @@ dcl-proc MD_ValidateCreate;
other; other;
MD_SendEscape( MD_SetError(
Error :
'MDF0005' : 'MDF0005' :
*blanks); *blanks);
@@ -551,7 +716,8 @@ dcl-proc MD_ValidateCreate;
if MediaDefinition.MaximumParallelResources < 0; if MediaDefinition.MaximumParallelResources < 0;
MD_SendEscape( MD_SetError(
Error :
'MDF0012' : 'MDF0012' :
*blanks); *blanks);
@@ -560,7 +726,8 @@ dcl-proc MD_ValidateCreate;
if MediaDefinition.MinimumParallelResources < 0; if MediaDefinition.MinimumParallelResources < 0;
MD_SendEscape( MD_SetError(
Error :
'MDF0013' : 'MDF0013' :
*blanks); *blanks);
@@ -570,7 +737,8 @@ dcl-proc MD_ValidateCreate;
if MediaDefinition.MinimumParallelResources > if MediaDefinition.MinimumParallelResources >
MediaDefinition.MaximumParallelResources; MediaDefinition.MaximumParallelResources;
MD_SendEscape( MD_SetError(
Error :
'MDF0014' : 'MDF0014' :
*blanks); *blanks);
@@ -587,7 +755,8 @@ dcl-proc MD_ValidateCreate;
if %trim( if %trim(
MediaDefinition.Device(DeviceIndex).DeviceName) = ''; MediaDefinition.Device(DeviceIndex).DeviceName) = '';
MD_SendEscape( MD_SetError(
Error :
'MDF0006' : 'MDF0006' :
*blanks); *blanks);
@@ -597,7 +766,8 @@ dcl-proc MD_ValidateCreate;
if MediaDefinition.Device(DeviceIndex) if MediaDefinition.Device(DeviceIndex)
.NumberOfMediaFiles < 1; .NumberOfMediaFiles < 1;
MD_SendEscape( MD_SetError(
Error :
'MDF0017' : 'MDF0017' :
MediaDefinition.Device(DeviceIndex).DeviceName); MediaDefinition.Device(DeviceIndex).DeviceName);
@@ -616,7 +786,8 @@ dcl-proc MD_ValidateCreate;
.MediaFile(MediaFileIndex) .MediaFile(MediaFileIndex)
.SequenceNumber <= 0; .SequenceNumber <= 0;
MD_SendEscape( MD_SetError(
Error :
'MDF0009' : 'MDF0009' :
*blanks); *blanks);
@@ -631,7 +802,8 @@ dcl-proc MD_ValidateCreate;
.NumberOfVolumeIdentifiers > .NumberOfVolumeIdentifiers >
MD_MaxVolumeIdentifiers; MD_MaxVolumeIdentifiers;
MD_SendEscape( MD_SetError(
Error :
'MDF0010' : 'MDF0010' :
*blanks); *blanks);
@@ -653,7 +825,8 @@ dcl-proc MD_ValidateCreate;
.VolumeIdentifier(VolumeIndex) .VolumeIdentifier(VolumeIndex)
.VolumeIdentifier) = ''; .VolumeIdentifier) = '';
MD_SendEscape( MD_SetError(
Error :
'MDF0011' : 'MDF0011' :
*blanks); *blanks);
@@ -669,9 +842,13 @@ dcl-proc MD_ValidateCreate;
// Duplicate Checks // Duplicate Checks
//-------------------------------------------------------------- //--------------------------------------------------------------
MD_CheckDuplicateDevices(MediaDefinition); MD_CheckDuplicateDevices(
MediaDefinition :
Error);
MD_CheckDuplicateSequences(MediaDefinition); MD_CheckDuplicateSequences(
MediaDefinition :
Error);
end-proc; end-proc;
@@ -690,12 +867,16 @@ dcl-proc MD_ValidateDelete;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pi; end-pi;
if %trim(MediaDefinition.MediaDefinitionName) = ''; if %trim(MediaDefinition.MediaDefinitionName) = '';
MD_SendEscape( MD_SetError(
Error :
'MDF0001' : 'MDF0001' :
*blanks); *blanks);
@@ -704,7 +885,8 @@ dcl-proc MD_ValidateDelete;
if %trim(MediaDefinition.LibraryName) = ''; if %trim(MediaDefinition.LibraryName) = '';
MD_SendEscape( MD_SetError(
Error :
'MDF0002' : 'MDF0002' :
*blanks); *blanks);
@@ -726,12 +908,16 @@ dcl-proc MD_ValidateRetrieve;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pi; end-pi;
if %trim(MediaDefinition.MediaDefinitionName) = ''; if %trim(MediaDefinition.MediaDefinitionName) = '';
MD_SendEscape( MD_SetError(
Error :
'MDF0001' : 'MDF0001' :
*blanks); *blanks);
@@ -740,7 +926,8 @@ dcl-proc MD_ValidateRetrieve;
if %trim(MediaDefinition.LibraryName) = ''; if %trim(MediaDefinition.LibraryName) = '';
MD_SendEscape( MD_SetError(
Error :
'MDF0002' : 'MDF0002' :
*blanks); *blanks);
@@ -763,6 +950,9 @@ dcl-proc MD_CheckApiError;
ApiError ApiError
likeds(MD_APIError_T) const; likeds(MD_APIError_T) const;
Error
likeds(MD_Error_T);
end-pi; end-pi;
@@ -779,7 +969,8 @@ dcl-proc MD_CheckApiError;
// Forward IBM message // Forward IBM message
//--------------------------------------------------------------- //---------------------------------------------------------------
MD_SendEscape( MD_SetError(
Error :
ApiError.MessageId : ApiError.MessageId :
''); '');
@@ -908,6 +1099,9 @@ dcl-proc MD_CheckDuplicateDevices;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pi; end-pi;
@@ -927,7 +1121,8 @@ dcl-proc MD_CheckDuplicateDevices;
%trim( %trim(
MediaDefinition.Device(DeviceIndex2).DeviceName); MediaDefinition.Device(DeviceIndex2).DeviceName);
MD_SendEscape( MD_SetError(
Error :
'MDF0007' : 'MDF0007' :
MediaDefinition.Device(DeviceIndex1).DeviceName); MediaDefinition.Device(DeviceIndex1).DeviceName);
@@ -952,6 +1147,9 @@ dcl-proc MD_CheckDuplicateSequences;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T) const; likeds(MD_MediaDefinition_T) const;
Error
likeds(MD_Error_T);
end-pi; end-pi;
@@ -981,7 +1179,8 @@ dcl-proc MD_CheckDuplicateSequences;
.MediaFile(MediaFileIndex2) .MediaFile(MediaFileIndex2)
.SequenceNumber; .SequenceNumber;
MD_SendEscape( MD_SetError(
Error :
'MDF0019' : 'MDF0019' :
%char( %char(
MediaDefinition.Device(DeviceIndex) MediaDefinition.Device(DeviceIndex)
+15 -3
View File
@@ -43,6 +43,9 @@ dcl-ds MediaDefinition
dcl-ds OriginalDefinition dcl-ds OriginalDefinition
likeds(MD_MediaDefinition_T); likeds(MD_MediaDefinition_T);
dcl-ds Error
likeds(MD_Error_T);
dcl-s DeviceIndex int(10); dcl-s DeviceIndex int(10);
dcl-s MediaIndex int(10); dcl-s MediaIndex int(10);
dcl-s VolumeIndex int(10); dcl-s VolumeIndex int(10);
@@ -79,8 +82,11 @@ dsply 'Deleting existing MEDDFN...';
monitor; monitor;
clear Error;
MD_DeleteMediaDefinition( MD_DeleteMediaDefinition(
MediaDefinition); MediaDefinition :
Error);
dsply 'Delete completed'; dsply 'Delete completed';
@@ -97,8 +103,11 @@ endmon;
dsply 'Creating MEDDFN...'; dsply 'Creating MEDDFN...';
clear Error;
MD_CreateMediaDefinition( MD_CreateMediaDefinition(
MediaDefinition); MediaDefinition :
Error);
dsply 'Create completed'; dsply 'Create completed';
@@ -116,8 +125,11 @@ OriginalDefinition = MediaDefinition;
dsply 'Retrieving MEDDFN...'; dsply 'Retrieving MEDDFN...';
clear Error;
MD_RetrieveMediaDefinition( MD_RetrieveMediaDefinition(
MediaDefinition); MediaDefinition :
Error);
dsply 'Retrieve completed'; dsply 'Retrieve completed';