This example illustrates the following features:
multiple windows
the repeat feature
command- and message-line usage
a large display surface needing scrolling
windows linked to data set transactions
This example uses two windows, FIND and ED. The FIND window instructs you to enter a name. Then a data set is searched for all the names starting with the entered value. If no observations are found, you receive the following message:
Not found, enter request
If any observations are found, they are displayed in the ED window. You can then edit all the fields. If several observations are found, you need to use the scrolling commands to view the entire display surface. If you enter the SUBMIT command, the data are updated in place in the data set. Otherwise, you receive the following message:
Not replaced, enter request
If you enter a blank field for the request, you are advised that EXIT is the keyword needed to exit the system. Here is the code:
start findedit; window ed rows=10 columns=40 icolumn=40 cmndline=c; window find rows=5 columns=35 icolumn=1 msgline=msg; edit user.class; display ed ( "Enter a name in the FIND window, and this" / "window will display the observations " / "starting with that name. Then you can" / "edit them and enter the submit command" / "to replace them in the data set. Enter cancel" / "to not replace the values in the data set." / / "Enter exit as a name to exit the program." ); do while(1); msg=' '; again: name=" "; display find ("Search for name: " name); if name=" " then do; msg='Enter exit to end'; goto again; end; if name="exit" then goto x; if name="PAUSE" then do; pause; msg='Enter again'; goto again; end; find all where(name=:name) into p; if nrow(p)=0 then do; msg='Not found, enter request'; goto again; end; read point p; display ed (//" name: " name " sex: " sex " age: " age /" height: " height " weight: " weight ) repeat; if c='submit' then do; msg="replaced, enter request"; replace point p; end; else do; msg='Not replaced, enter request'; end; end; x: display find ("Closing Data Set and Exiting"); close user.class; window close=ed; window close=find; finish findedit; run findedit;