record format parmf(integer dest, srce, p1, p2, p3, p4, p5, p6) external routine spec dpon(record (parmf) name p) external routine spec dpoff(record (parmf) name p) system routine spec signal(integer ep, p1, p2, integer name flag) const long integer int mask= x'03E2000A03E2000A'; ! INT: A,C,Q,V,W,X,Y,a,c,q,v,w,x,y system routine spec reroutecontingency(integer ep, class, long integer mask, routine ontrap, integer name flag) external routinespec tim(string (255) s) external routine spec documents(string (255) s) external routine spec ddelay(integer seconds) external routine spec nrstrg(stringname s) external routine spec bel(string (255) s) external routine spec define(string (255) s) external routine spec clear(string (255) s) include "CONLIB.VVP_VVPSPECS" record format tmodef(half integer flags1, flags2, {.04} byte integer promptchar, endchar, {.06} byte array breakbit1(0:3) {%or %halfintegerarray BREAKBIT2(0:1))}, {.0A} byte integer pads, rptbuf, linelimit, pageleng, {.0E} byte integer array tabvec(0:7), {.16} byte integer cr, esc, del, can, sp1, sp2, sp3, sp4, sp5, sp6) {length of this format is X20 bytes} record format uinff(string (6) user, string (31) jobdocfile, {.28} integer mark, fsys, {.30} procno, isuff, reason, batchid, {.40} sessiclim, scidensad, scidens, startcnsl, {.50} aiostat, sct date, sync1 dest, sync2 dest, {.60} async dest, aacct rec, aic revs, {.6C} string (15) jobname, {.7C} string (31) basefile, {.9C} integer previc, {.A0} itaddr0, itaddr1, itaddr2, itaddr3, {.B0} itaddr4, stream id, dident, scarcity, {.C0} preemptat, string (11) spoolrfile, {.D0} integer funds, sesslen, priority, decks, {.E0} drives, part close, {.E8} record (tmodef) tmodes, {108} integer pslot, {10C} string (63) itaddr, {14C} integer array fclosing(0:3), integer clo fes, {160} integer output limit, dapsecs, long integer dapinstrs, {170} integer out, string (15) outname, {184} integer hiseg, integer uend) const record (uinff) name uinf=9<<18 const integer every= 1 const integer after= 2 const integer clock dact=5 {arbitrary} constinteger clockx=1 owninteger type=0 routine kick at(integer seconds, dact, every or after, info) ! Param EVERY OR AFTER should be 1 for every SECONDS seconds, or CANCEL ! or 2 for after SECONDS second. ! If SECONDS is -1, then it's a "cancel" request. record (parmf) p p=0 p_dest=X'A0000'!every or after p_p1=uinf_sync1 dest!dact p_p2=seconds p_p3=info {returned in P_P1} dpon(p) end ; ! KICK AT routine ontrap(integer class, subclass) integer flag integer array aa(0:31) kick at(-1 {cancel}, clock dact, after, 9 {info}) if type=clock then vv define triggers(0, 0, 0) signal(3, class, subclass, flag); ! Get the Subsystem to do the rest end ; ! of ONTRAP external routine alive(string (255) s) integer flag, secs, count string (127) aa, bb record (parmf) p type=0 secs=10{mins}*60; count=0 reroutecontingency(3, 65, int mask, ontrap, flag); ! Catch INT: messages cycle count=count+1 kick at(secs, clock dact, after, 0) dpoff(p) tim("") repeat end {alive} external routine clock(string (255) s) constinteger inside wid=8, inside dep=3 integer start line, start col, outer, i routine spec draw box integer flag, secs, count string (127) aa, bb record (parmf) p start line=12-inside dep//2-1 start col=40-inside wid//2-1 secs=30; count=0 reroutecontingency(3, 65, int mask, ontrap, flag); ! Catch INT: messages vv init(flag); return if flag#0 vv define triggers(1, 0, 0) type=clockx draw box cycle count=count+1 kick at(secs, clock dact, after, 0) dpoff(p) vv goto(start col+inside wid//1-3, start line+inside dep//2+1) vv printstring(timex) vv update screen repeat routine draw box vv goto(start col, start line) for outer=1, 1, 2 cycle for i=1, 1, inside wid+2 cycle vv printstring("*") repeat exit if outer=1 for i=1, 1, inside wid cycle vv printstring("*"); vv spaces(inside wid); vvprintstring("*") repeat repeat end {draw box} end {clock} end of file