!*********************************************************************** !* !* Test program for screen control package !* !*********************************************************************** ! ! !*********************************************************************** !* !* Constants !* !*********************************************************************** ! constantinteger no = 0, yes = 1 constantinteger number mode = 0, character mode = 1 constantstring (3)array ascode(0:32) = c "NUL","SOH","STX","ETX","EOT","ENQ","ACK","BEL", "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI","DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB", "CAN", "EM","SUB","ESC", "FS", "GS", "RS", "US", "SP" ! ! !*********************************************************************** !* !* Subsystem references !* !*********************************************************************** ! systemstringfunctionspec htos(integer value,places) systemstringfunctionspec itos(integer n) externalroutinespec prompt(string (255) s) externalintegerfunctionspec vdub(integer n) externalstringfunctionspec vduc(integer x,y) externalintegerfunctionspec vdui(integer n) externalstringfunctionspec vdus(integer n) ! ! !*********************************************************************** !* !* Service routines !* !*********************************************************************** ! stringfunction character(integer ch,mode) ! Yields a string describing 'ch', in a form which depends on 'mode'. string (4) res ! if mode = character mode then start if 0 <= ch <= 32 then result = ascode(ch) else c if ch = x'7f' then result = "DEL" else start res = "'".tostring(ch)."'" res = res."'" if ch = '''' result = res finish else result = htos(ch,2) finish end ; ! of character ! !----------------------------------------------------------------------- ! stringfunction chs string(string (255) value,integer mode) ! Yields a printable version of the item described by 'value'. integer last,i,count,flag,ch string (255) res ! res = "" result = "" if length(value) = 0 last = -1 count = 0 flag = no for i = 1,1,length(value) cycle ch = charno(value,i) if ch = last then count = count + 1 else start if last # -1 then start res = res."," if flag = yes flag = yes res = res.character(last,mode) if count # 1 then res = res."(".itos(count).")" finish last = ch count = 1 finish repeat res = res."," if flag = yes res = res.character(last,mode) if count # 1 then res = res."(".itos(count).")" result = res end ; ! of chs string ! ! !*********************************************************************** !* !* S T E S T !* !*********************************************************************** ! externalroutine stest(string (255) parms) integer flag,x,y string (255) s,s1 ! prompt("X value: ") read(x) prompt("Y value: ") read(y) ! s = vduc(x,y) ! if s = "" then start printstring("Terminal cannot position cursor") else printstring(chs string(s,character mode)) finish newline end ; ! of stest endoffile