mrcvmail: proc options(main); %replace true by '1'b, false by '0'b; %include 'cpnetdio.dcl'; %include 'mpmdio.dcl'; %include 'diomod.dcl'; dcl 1 MailBox_UQCB static, 2 pointer ptr, 2 msgadr ptr, 2 name char(8) initial ('MailBoxQ'); dcl MailBoxAdr ptr, 1 MailBox based (MailBoxAdr), 2 nmb_mail fixed(7), 2 size_mail bit(8), 2 mailslots ptr; dcl MailSlotAdr ptr, 1 MailSlot (0:16) based (MailSlotAdr), 2 MailInPtr fixed(7), 2 MailOutPtr fixed(7), 2 MailCnt fixed(7), 2 MailBufferPtr ptr; dcl MailBufferAdr ptr, MailBuffer (0:8191) based (MailBufferAdr) bit(8); dcl MailAdr ptr, 1 Mail based (MailAdr), 2 size fixed(7), 2 source bit(8), 2 text char(254); dcl i fixed(15), version bit(16), v char(254) var; /************************* * * * Main Program * * * *************************/ version = vers(); if substr (version,1,8) ~= '01'b4 then do; put skip list ('Must be running under MP/M.'); call reboot(); end; if ~opnque (addr (MailBox_UQCB)) then do; put skip list ('NETWRKIF not configured for mail.'); call reboot(); end; MailBox_UQCB.msgadr = addr (MailBoxAdr); call rdque (addr (MailBox_UQCB)); MailSlotAdr = addr (MailBox.mailslots); do while (MailSlot(0).MailCnt ~= 0); MailSlot(0).MailCnt = MailSlot(0).MailCnt - 1; MailBufferAdr = MailSlot(0).MailBufferPtr; MailAdr = addr (MailBuffer(fixed(MailBox.size_mail,15) * fixed(MailSlot(0).MailOutPtr,15))); MailSlot(0).MailOutPtr = MailSlot(0).MailOutptr + 1; if MailSlot(0).MailOutPtr = MailBox.nmb_mail then MailSlot(0).MailOutPtr = 0; v = substr (Mail.text,1,Mail.size); put edit ('[',Mail.source,'] "',v,'"') (skip,a,b4,a,a,a); end; call wrque (addr (MailBox_UQCB)); call reboot(); end mrcvmail;