00001 def new global shared var prog-started as log. 00002 def new global shared var u-name as char. 00003 00004 def shared var screen-title as char. 00005 00006 def shared var total-floor-no as int init 4. 00007 def shared var room-types as char extent 5. 00008 00009 def shared var res-state as char extent 4. 00010 def shared var res-state-ch as char extent 4. 00011 00012 def shared var res-state-placed as int init 1. 00013 def shared var res-state-canceled as int init 2. 00014 def shared var res-state-checked-in as int init 3. 00015 def shared var res-state-checked-out as int init 4. 00016 00017 prog-started = true. 00018 def var h-time as char. 00019 00020 form u-name view-as text 00021 screen-title view-as text 00022 h-time view-as text 00023 with frame f-main-header size 80 by 1 no-box no-underline no-labels at row 1 col 1. 00024 00025 00026 screen-title = "Room Overview". 00027 00028 if u-name = ? or u-name = "" then do: 00029 message "You are not logged in - access denied" view-as alert-box. 00030 quit. 00031 end. 00032 00033 h-time = string(now, "99/99/99 HH:MM:SS"). 00034 h-time = substring(h-time, 10). 00035 00036 do with frame f-main-header: 00037 u-name:column = 1. 00038 screen-title:column = u-name:column + length(u-name) + (frame f-main-header:width-chars - length(u-name) - length(screen-title) - length(h-time)) / 2. 00039 h-time:column = frame f-main-header:width-chars - length(h-time). 00040 screen-title:format = "x(" + string(length(screen-title)) + ")". 00041 end. 00042 00043 display u-name screen-title h-time with frame f-main-header. 00044 00045 00046 /* view main room screen */ 00047 00048 function get-total-rooms returns int(input room-type as int, input f-no as int). 00049 def var n as int. 00050 00051 for each room where room.type-of-room = room-type and room.floor = f-no: 00052 n = n + 1. 00053 end. 00054 00055 return n. 00056 end. 00057 00058 def var fheader as char. 00059 def var i as int. 00060 def var j as int. 00061 def var c as int. 00062 def var r as int. 00063 def var hfi as handle. 00064 def var hsl as handle. 00065 def var col-size as int. 00066 def var fsep as char. 00067 def var maxrt as int init 0. 00068 00069 fsep = fill("-", 78). 00070 col-size = 78 / total-floor-no. 00071 00072 do i = 1 to total-floor-no: 00073 fheader = fheader + "Floor " + string(i) + fill(" ", col-size - length("floor n")). 00074 end. 00075 00076 do i = 1 to extent(room-types): 00077 maxrt = max(maxrt, length(room-types[i])). 00078 end. 00079 00080 form fheader view-as text format "x(78)" skip 00081 fsep view-as text format "x(78)" skip 00082 with frame f-room-overview no-labels size 80 by 20 at row 2 col 1. 00083 00084 display fheader fsep with frame f-room-overview. 00085 00086 create widget-pool. 00087 do i = 1 to total-floor-no: 00088 c = (i - 1) * col-size + 1. 00089 00090 do j = 1 to extent(room-types): 00091 r = j + 2. 00092 00093 create text hfi. 00094 hfi:frame = frame f-room-overview:handle. 00095 hfi:row = r. 00096 hfi:col = c + maxrt + 4. 00097 hfi:data-type = "integer". 00098 hfi:format = ">>>". 00099 hfi:visible = true. 00100 hfi:screen-value = string(get-total-rooms(j, i)). 00101 00102 create text hsl. 00103 hsl:row = r. 00104 hsl:col = c. 00105 hsl:frame = frame f-room-overview:handle. 00106 hsl:format = "x(" + string(maxrt) + ")". 00107 hsl:screen-value = room-types[j]. 00108 hsl:visible = true. 00109 00110 hfi:side-label-handle = hsl. 00111 end. 00112 end. 00113 00114 def var selection as char. 00115 selection = ?. 00116 00117 PROC: 00118 repeat: 00119 00120 case selection: 00121 when "R" then leave PROC. 00122 otherwise do: 00123 if selection <> ? then do: 00124 message "Invalid selection - try again". 00125 selection = ?. 00126 pause. 00127 next PROC. 00128 end. 00129 end. 00130 end. 00131 00132 selection = "R". /* assume we are returning; otherwise the user entered something valid */ 00133 00134 CHOICE: 00135 repeat on endkey undo CHOICE, leave CHOICE: 00136 hide message no-pause. 00137 message "". 00138 message "(R)eturn" update selection format "x(1)" auto-return. 00139 00140 selection = caps(selection). 00141 leave. 00142 end. 00143 00144 end. 00145 00146 publish "pop-program". 00147