* Service program to handle stdio * to create: * CRTRPGMOD MODULE(xxx/STDIO) + * SRCFILE(xxx/QRPGLESRC) SRCMBR(STDIO) * CRTSRVPGM SRVPGM(xxx/STDIO) MODULE(STDIO) H nomain bnddir('QC2LE') /define stdio_srvpgm /copy prototypes,stdio // **************** stdin *************** // P stdin b export D pi 10i 0 D info 4096a varying D length s 10i 0 D buffer s 4096a /free monitor; length = fread (0: %addr(buffer): %size(buffer)); if length > *zero; info = %subst(buffer: 1: length); else; %len(info) = *zero; endif; return length; on-error; stderr ('Unexpected error in stdin routine.' + CRLF); cexit (1); return -1; endmon; /end-free P e // **************** stdout *************** // P stdout b export D pi D outfo 4096 const varying D buffer s 4096 /free monitor; buffer = outfo; fwrite (1: %addr(buffer): %len(outfo)); on-error; stderr ('Unexpected error in stdout routine.' + CRLF); cexit (1); return; endmon; /end-free P e // **************** stderr *************** // P stderr b export D pi D outfo 4096 const varying D buffer s 4096 /free monitor; buffer = outfo; fwrite (2: %addr(buffer): %len(outfo)); on-error; cexit (1); return; endmon; /end-free P e // **************** exit *************** // P exit b export D pi D status 3u 0 value /free cexit (status); /end-free P e