Hello,
I'd like to search in a spoolfile and therefore I read the spoolfile into a userspace object.
But my result "WorkString" (bold formated) is either blank or has some mysterious content.
I cannot recognize any error so far, but that is my first meeting with this api.
The spoolfile is a *SCS file.
UsrSpc-Object looks fine so far.
I appreciate any help
Kind regards,
Sascha
I'd like to search in a spoolfile and therefore I read the spoolfile into a userspace object.
But my result "WorkString" (bold formated) is either blank or has some mysterious content.
I cannot recognize any error so far, but that is my first meeting with this api.
The spoolfile is a *SCS file.
UsrSpc-Object looks fine so far.
I appreciate any help
Kind regards,
Sascha
Code:
PGetSplfData B Export DGetSplfData PI D Handle 10i 0 value D D* - Userspace erstellen DCreate_UserSpace... D PR ExtPgm('QUSCRTUS') D UserSpace 20a Const D ExternalAttribute... D 10A Const D InitialSize 10i 0 Const D InitialValue 1a Const D PublicAuthority... D 10a Const D Text 50a Const D Replace 10a Const D Error Like(ErrorCode) D*- Userspace auf "Automatisch erweiterbar" setzen D AutoExtendUsrSpc... D PR ExtPgm('QUSCUSAT') D D RtnLib 10A D UsrSplc 20A const D Attrib 65535A const options(*varsize) D Error 32767A options(*varsize) D KEY_AUTO_EXT C const(3) D AutoExt DS qualified D NbrRec 10I 0 inz(1) D Key 10I 0 inz(KEY_AUTO_EXT) D Len 10I 0 inz(%size(AutoExt.Data)) D Data 1A inz(*ON) D* - Zeiger des Userspaces ermitteln DRetrieve_UserSpace_Pointer... D PR ExtPgm('QUSPTRUS') D UserSpace 20a Const D Pointer * D* - Spoolfile in einen Userspace laden D PutSplfInUsrSpc... D PR ExtPgm('QSPGETSP') D D Handle 10I 0 const D Space 20A const D Format 8A const D BufNo 10I 0 const D WaitFor 10A const D ErrorCode 32767A options(*varsize) D ErrorCode ds D bytesProv 10i 0 inz(0) D bytesAvail 10i 0 inz(0) D UsrSpc 10A D UsrSpcLib 10A D RtnUsrSpcLib 10A D* Header für QSPGETSP (Laden Splf in UsrSpc) D p_UsrSpc S * D dsGSH DS based(p_UsrSpc) qualified D dsGSH_UsrAra 64A D dsGSH_HdrSize 10I 0 D dsGSH_StrLvl 4A D dsGSH_SplfLvl 6A D dsGSH_Format 8A D dsGSH_CompInd 1A D dsGSH_Reserv1 1A D dsGSH_SpcUsed 10I 0 D FstBufferOffset... D 10I 0 D dsGSH_ReqBufs 10I 0 D RetBuffers 10I 0 D dsGSH_PDSize 10I 0 D dsGSH_NPages 10I 0 D dsGSH_NFPage 10I 0 D dsGSH_OFPage 10I 0 Offset of 1st page D dsGSH_Reserv2 8A D p_Buffer S * D dsBuffer DS based(p_Buffer) D qualified D LenBuffInfo 10i 0 D BuffOrdinal 10i 0 D GenInfoOffset 10i 0 D GenInfoSize 10i 0 D PageDataOffset 10i 0 D PageDataSize 10i 0 D PageCount 10i 0 D PageEntrySize 10i 0 D PrtDataOffset 10i 0 D PrtDataSize 10i 0 D p_GeneralInfo S * D dsGeneralInfo DS based(p_GeneralInfo) D qualified D NonBlankLinesBuffer... D 10i 0 D NonBlankLines1stPage... D 10i 0 D ErrInfoNumBuffer... D 10i 0 D ErrInfoOffset 10i 0 D PrtDataSize 10i 0 D State 10A D LastPageConinues... D 1A D AdvPrtFuncFile 1A D LACCmdArrInBuf 1A D AnyBuffHadLAC 1A D ErrInfoLAC 1A D ErrInfo 1A D ZeroPages 1A D LoadFont 1A D IPDSData 1A D Reserved 5A D* D i S 10i 0 D p_Data S * D WorkString S 5000A Varying D TestStr S 5000A Varying D* /free UsrSpc = 'IT013'; UsrSpcLib = 'REISBIB' ; //Create UsrSpc: Create_Userspace( UsrSpc + UsrSpcLib : *BLANKS : 4096 : *BLANKS : '*CHANGE' : *BLANKS : '*YES' : ErrorCode ); //Auto-extend usrspc AutoExtendUsrSpc(RtnUsrSpcLib : UsrSpc + UsrSpcLib : AutoExt : ErrorCode); //Read Splf into UsrSpc: PutSplfInUsrSpc(Handle : Usrspc + UsrSpcLib : 'SPFR0200' : -1 : '*WAIT' : ErrorCode); //Get Pointer for Userspace: Retrieve_UserSpace_Pointer( UsrSpc + UsrSpcLib : p_UsrSpc); p_Buffer = p_UsrSpc + dsGSH.FstBufferOffset; for i = 1 to dsGSH.RetBuffers; // p_GeneralInfo = P_UsrSpc + dsBuffer.GenInfoOffset; p_Data = P_Buffer + dsBuffer.PrtDataOffset ; [B]Workstring = %Str(p_Data : dsBuffer.PrtDataSize);[/B] p_Buffer = p_Buffer + dsBuffer.LenBuffInfo; ENDFOR; return ; /end-free P E
Comment