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