! ICMP ping program, GDMR, May 1987 %recordformat desc fm(%integer l, a) %recordformat IOSB fm(%short status, bytes, %integer extra) %systemintegerfnspec assign (%record(desc fm)%name name, %integername chan, %integer acmode, mbxnam) %systemintegerfnspec QIOW (%integer efn, chan, func, %record(IOSB fm)%name IOSB, %integer astadr, astprm, %integer P1, P2, P3, P4, P5, P6) %constinteger IO writevblk = 16_0030 %ownstring(31) mailbox = "INET__ICMP_REQUESTS" %owninteger channel = 0 %systemroutinespec exit(%integer why) %externalintegerfnspec INet name to address(%string(31) name) %recordformat request fm(%integer code, target) %begin %record(desc fm) d %record(IOSB fm) IOSB %record(request fm) r %string(31) target %integer status prompt("Target: "); read(target) r_target = INet name to address(target) %if r_target = 0 %start printstring("Unknown target """); printstring(target) print symbol('"'); newline %stop %finish d_l = length(mailbox); d_a = addr(mailbox) + 1 status = assign(d, channel, 0, 0) exit(status) %if status & 1 = 0 r_code = 1 status = QIOW(0, channel, IO writevblk, IOSB, 0, 0, addr(r), 8, 0, 0, 0, 0) exit(status) %if status & 1 = 0 exit(IOSB_status) %if IOSB_status & 1 = 0 %end %of %program