Ich werfe aufgrund der Anregung von Baldur noch eine Idee für "total" und "fully" free in den Hut
Code:ctl-opt main(main) dftactgrp(*no) option(*nounref); //------------------------------------------------------------------// // // // Convert Zoned to Packed from String // // // //----------------- // // R.Ross 06.2017 * // //------------------------------------------------------------------// // Main // //------------------------------------------------------------------// dcl-proc Main; dcl-s LocString varchar(30); // String dcl-s LocNumber packed(11:2); // Number LocString = '000005843M'; LocNumber = cvtZonedToPacked(LocString:2); end-proc; //------------------------------------------------------------------// // Convert Zoned to Packed from String // //------------------------------------------------------------------// dcl-proc cvtZonedToPacked; dcl-pi *n like(LocNumber); PiString varchar(30) const options(*varsize:*trim); PiDecimals uns(5) const options(*nopass); end-pi; dcl-ds PsString qualified; String char(30); Number zoned(30) pos(01); end-ds; dcl-s LocNumber packed(30:9); // Number evalr PsString.String = PiString; LocNumber = PsString.Number; if %parms >= %parmnum(PiDecimals); // Decimals LocNumber /= 10 ** PiDecimals; // Decimals endif; return LocNumber; // Number end-proc; //------------------------------------------------------------------//
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks