diff --git a/meddfnprs.rpgle b/meddfnprs.rpgle index 40f6536..6901147 100644 --- a/meddfnprs.rpgle +++ b/meddfnprs.rpgle @@ -37,8 +37,9 @@ end-pr; // // Parses a retrieved TAPE0200 buffer. // -// Currently: +// Currently supported: // - TAPE0200 header +// - TAPE0200 device definitions // //===================================================================== @@ -59,6 +60,12 @@ dcl-proc MD_ParseRetrieveBuffer; dcl-ds Header likeds(MD_Tape0200Header_T); + dcl-ds Device + likeds(MD_Tape0200DeviceDefinition_T); + + dcl-s DeviceOffset int(10); + dcl-s DeviceIndex int(10); + //--------------------------------------------------------------- // Initialize result @@ -68,7 +75,7 @@ dcl-proc MD_ParseRetrieveBuffer; //--------------------------------------------------------------- - // Copy TAPE0200 header + // TAPE0200 Header //--------------------------------------------------------------- Header = @@ -98,8 +105,49 @@ dcl-proc MD_ParseRetrieveBuffer; Header.SaveFormat; -end-proc; + //--------------------------------------------------------------- + // Device Definitions + //--------------------------------------------------------------- + DeviceOffset = + Header.OffsetToFirstDeviceDefinition; + + for DeviceIndex = 1 + to Header.NumberOfDeviceDefinitions; + + Device = + %subst( + ReceiverBuffer : + DeviceOffset + 1 : + %size(Device)); + + + //------------------------------------------------------------ + // Device -> Media Definition + //------------------------------------------------------------ + + MediaDefinition.Device(DeviceIndex).DeviceName = + Device.DeviceName; + + MediaDefinition.Device(DeviceIndex).NumberOfMediaFiles = + Device.NumberOfMediaFileDefinitions; + + + //------------------------------------------------------------ + // Next device + //------------------------------------------------------------ + + if Device.OffsetToNextDeviceDefinition > 0; + + DeviceOffset += + Device.OffsetToNextDeviceDefinition; + + endif; + + endfor; + + +end-proc;