erstes Mediafiel im Parser

This commit is contained in:
2026-08-22 16:25:16 +02:00
parent f2ae46c427
commit 2012610615
+40 -23
View File
@@ -1,4 +1,4 @@
**FREE **free
//======================================================================== //========================================================================
// //
// Media Definition Parser // Media Definition Parser
@@ -18,8 +18,6 @@ ctl-opt
// /COPY GOSCH1/MEDDFN,MEDDFN_H // /COPY GOSCH1/MEDDFN,MEDDFN_H
// /COPY GOSCH1/MEDDFN,MEDDFNAP_H // /COPY GOSCH1/MEDDFN,MEDDFNAP_H
dcl-pr MD_ParseRetrieveBuffer; dcl-pr MD_ParseRetrieveBuffer;
ReceiverBuffer ReceiverBuffer
@@ -28,7 +26,6 @@ dcl-pr MD_ParseRetrieveBuffer;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T); likeds(MD_MediaDefinition_T);
end-pr; end-pr;
//===================================================================== //=====================================================================
@@ -53,27 +50,28 @@ dcl-proc MD_ParseRetrieveBuffer;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T); likeds(MD_MediaDefinition_T);
end-pi; end-pi;
dcl-ds Header dcl-ds Header
likeds(MD_Tape0200Header_T); likeds(MD_Tape0200Header_T);
dcl-ds Device dcl-ds Device
likeds(MD_Tape0200DeviceDefinition_T); likeds(MD_Tape0200DeviceDefinition_T);
dcl-ds MediaFile
likeds(MD_Tape0200MediaFileDefinition_T);
dcl-s MediaOffset int(10);
dcl-s DeviceOffset int(10); dcl-s DeviceOffset int(10);
dcl-s DeviceIndex int(10); dcl-s DeviceIndex int(10);
//--------------------------------------------------------------- //---------------------------------------------------------------
// Initialize result // Initialize result
//--------------------------------------------------------------- //---------------------------------------------------------------
clear MediaDefinition; clear MediaDefinition;
//--------------------------------------------------------------- //---------------------------------------------------------------
// TAPE0200 Header // TAPE0200 Header
//--------------------------------------------------------------- //---------------------------------------------------------------
@@ -84,7 +82,6 @@ dcl-proc MD_ParseRetrieveBuffer;
1 : 1 :
%size(Header)); %size(Header));
//--------------------------------------------------------------- //---------------------------------------------------------------
// Header -> Media Definition // Header -> Media Definition
//--------------------------------------------------------------- //---------------------------------------------------------------
@@ -104,7 +101,6 @@ dcl-proc MD_ParseRetrieveBuffer;
MediaDefinition.SaveFormat = MediaDefinition.SaveFormat =
Header.SaveFormat; Header.SaveFormat;
//--------------------------------------------------------------- //---------------------------------------------------------------
// Device Definitions // Device Definitions
//--------------------------------------------------------------- //---------------------------------------------------------------
@@ -121,7 +117,6 @@ dcl-proc MD_ParseRetrieveBuffer;
DeviceOffset + 1 : DeviceOffset + 1 :
%size(Device)); %size(Device));
//------------------------------------------------------------ //------------------------------------------------------------
// Device -> Media Definition // Device -> Media Definition
//------------------------------------------------------------ //------------------------------------------------------------
@@ -132,6 +127,40 @@ dcl-proc MD_ParseRetrieveBuffer;
MediaDefinition.Device(DeviceIndex).NumberOfMediaFiles = MediaDefinition.Device(DeviceIndex).NumberOfMediaFiles =
Device.NumberOfMediaFileDefinitions; Device.NumberOfMediaFileDefinitions;
//---------------------------------------------------------------
// First Media File
//---------------------------------------------------------------
if Device.NumberOfMediaFileDefinitions > 0;
MediaOffset =
Device.OffsetToFirstMediaFileDefinition;
MediaFile =
%subst(
ReceiverBuffer :
MediaOffset + 1 :
%size(MediaFile));
//------------------------------------------------------------
// Media File -> Media Definition
//------------------------------------------------------------
MediaDefinition.Device(DeviceIndex)
.MediaFile(1)
.SequenceNumber =
MediaFile.SequenceNumber;
MediaDefinition.Device(DeviceIndex)
.MediaFile(1)
.StartingPositionInFile =
MediaFile.StartingPositionInFile;
MediaDefinition.Device(DeviceIndex)
.MediaFile(1)
.NumberOfVolumeIdentifiers =
MediaFile.NumberOfVolumeIdentifiers;
endif;
//------------------------------------------------------------ //------------------------------------------------------------
// Next device // Next device
@@ -141,16 +170,10 @@ dcl-proc MD_ParseRetrieveBuffer;
DeviceOffset += DeviceOffset +=
Device.OffsetToNextDeviceDefinition; Device.OffsetToNextDeviceDefinition;
endif; endif;
endfor; endfor;
end-proc; end-proc;
//===================================================================== //=====================================================================
// //
// MD_RetrieveMediaDefinition // MD_RetrieveMediaDefinition
@@ -165,10 +188,8 @@ dcl-proc MD_RetrieveMediaDefinition export;
MediaDefinition MediaDefinition
likeds(MD_MediaDefinition_T); likeds(MD_MediaDefinition_T);
end-pi; end-pi;
dcl-ds QualifiedObject dcl-ds QualifiedObject
likeds(MD_QualifiedObjectName_T); likeds(MD_QualifiedObjectName_T);
@@ -190,7 +211,6 @@ dcl-proc MD_RetrieveMediaDefinition export;
QualifiedObject.LibraryName = QualifiedObject.LibraryName =
MediaDefinition.LibraryName; MediaDefinition.LibraryName;
//--------------------------------------------------------------- //---------------------------------------------------------------
// Initialize receiver buffer and error structure // Initialize receiver buffer and error structure
//--------------------------------------------------------------- //---------------------------------------------------------------
@@ -220,10 +240,7 @@ dcl-proc MD_RetrieveMediaDefinition export;
if ApiError.BytesAvailable > 0; if ApiError.BytesAvailable > 0;
// zunchst nur Fehler zurckgeben/anzeigen // zunchst nur Fehler zurckgeben/anzeigen
endif; endif;
// MD_CheckApiError(ApiError); // MD_CheckApiError(ApiError);
end-proc; end-proc;