From: SMTP%"DSJ@WKUVX1.WKU.EDU" 9-APR-1994 15:25:24.89 To: EVERHART CC: Subj: APRIL94.SWITCH X-FileServer: Digital Systems Journal File Server Date: Sat, 09 Apr 1994 14:22:54 CDT Sender: DSJ-Mgr@WKUVX1.WKU.EDU Errors-To: DSJ-Mgr@WKUVX1.WKU.EDU Warnings-To: <> From: DSJ-Mgr@WKUVX1.WKU.EDU Reply-To: DSJ@WKUVX1.WKU.EDU Subject: APRIL94.SWITCH To: EVERHART@arisia.gce.com $! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created: $! Name : SWITCH $! By : @WKUVX1.BITNET $! Date : 8-APR-1994 05:08:48.53 $! Using: VMS_SHARE 8.4, (C) 1993 Andy Harper, Kings College London UK $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. SWITCH.DSJ;1 $! $ set="set" $ set symbol/scope=(nolocal,noglobal) $ f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $ e="write sys$error ""%UNPACK"", " $ w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ if f$getsyi("CPU") .gt. 127 then $ goto start $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes,P4=size $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped" $ delete 'f'* $ exit $dirok: $ x=f$search(P1) $ if x .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped" $ delete 'f'* $ exit $file_absent: $ w "-I-UNPACK, Unpacking ", P5, " of ", P6, " - ", P1, " - ", P4, " Blocks" $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT/NOJOURNAL 'f'/OUT='n' PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t, SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;PROCEDURE SkipPartsep LOCAL m; LOOP m:=MARK(NONE);EXITIF m=END_OF(b);DELETE(m);EXITIF INDEX(ERASE_LINE, "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b, n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF; MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1); p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[ ' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE; PROCEDURE Decode LOCAL m;POSITION(BEGINNING_OF(b));LOOP m:=MARK(NONE);EXITIF m= END_OF(b);DELETE(m);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")= 1 THEN SkipPartSep;ELSE ProcessLine;MOVE_HORIZONTAL(1);ENDIF;ENDLOOP; ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL, OFF);t:="0123456789ABCDEF";f:=GET_INFO(COMMAND_LINE,"file_name");b:= CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO(COMMAND_LINE,"output_file")); QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ endsubroutine $start: $! $ create 'f' X`20`20`20`20switch`20(`20client_data`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20case`20DO_COMPUTATION_ITEM_INDEX: X`20`20`20`20`20`20`20`20`20`20`20`20/*`20User`20wishes`20to`20start`20the`20co Vmputation.`20`20`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20`20display_updates`20=`20True; X`20`20`20`20`20`20`20`20`20`20`20`20`20printing_output`20=`20True; X`20`20`20`20`20`20`20`20`20`20`20`20`20terminate_computation`20=`20False; X`20`20`20`20`20`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*`20Fetch`20the`20watch`20cursor`20a Vnd`20define`20it`20as`20the`20cursor`20to`20be X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*`20used`20when`20the`20pointer`20is V`20within`20'window'.`20`20Then`20free X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*`20the`20cursor`20definition`20(all Vow`20the`20server`20to`20discard`20it`20and X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*`20reclaim`20the`20memory). X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*/ X X X X`20`20`20`20`20`20`20`20`20`20`20`20`20watch_cursor`20=`20XCreateFontCursor`20 V(`20display,`20XC_watch`20); X`20`20`20`20`20`20`20`20`20`20`20`20`20XDefineCursor`20(`20display,`20window, V`20watch_cursor`20); X`20`20`20`20`20`20`20`20`20`20`20`20`20XFreeCursor`20(`20display,`20watch_curs Vor`20); X`20`20`20`20`20`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*`20Switch`20sensitivity`20on`20a`20 Vcouple`20of`20menu`20items X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20`20XtSetSensitive`20(`20widget_list`5B`20k V_doComputationButton`20`5D,`20False`20); X`20`20`20`20`20`20`20`20`20`20`20`20`20XtSetSensitive`20(`20widget_list`5B`20k V_abortButton`20`5D,`20True`20); X`20`20`20`20`20`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*`20Register`20the`20work`20procedur Ve`20to`20do`20all`20the`20computations. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20`20computeID`20=`20XtAppAddWorkProc`20(`20 Vcontext, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20computeValues, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20(XtPointer)`200`20); X X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20break; X X`0C X X/* X**++ X**`20`20FUNCTIONAL`20DESCRIPTION: X** X**`20`20`20`20`20`20findDisplay`20-`20This`20routine`20checks`20for`20the`20ex Vistence`20of X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20an`20X`20Display V.`20`20It`20does`20this`20by`20first`20checking X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20the`20command`20 Vargs`20for`20a`20display`20string.`20`20If`20found, X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20it`20uses`20that V`20string`20in`20an`20XOpenDisplay`20call.`20`20Otherwise, X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20it`20uses`20the V`20NULL`20string`20which`20forces`20XOpenDisplay`20to X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20look`20for`20a V`20DISPLAY`20environment`20variable`20and`20to`20open`20that. X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20If`20the`20routi Vne`20succeeds,`20a`20display`20exists.`20`20Otherwise, X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20there`20is`20no V`20X`20server`20defined. X** X**`20`20FORMAL`20PARAMETERS: X** X**`20`20`20`20`20`20argc`20-`20(int)`20#`20of`20command`20line`20arguments X**`20`20`20`20`20`20argv`20-`20(char`20*`5B`5D)`20command`20line`20args X** X**`20`20RETURN`20VALUE: X** X**`20`20`20`20`20`20True`20or`20False. X** X**`20`20SIDE`20EFFECTS: X** X**`20`20`20`20`20`20None X** X**`20`20DESIGN: X** X**`20`20`20`20`20`20None X** X** X X X X** X**-- X*/ XBoolean`20findDisplay`20(`20int`20argc,`20char`20*argv`5B`5D`20) X`7B X`20`20`20`20int`20temp_index; X`20`20`20`20Boolean`20found;`20`20`20`20`20`20`20`20`20`20`20/*`20Flag`20to`20 Vindicate`20that`20we`20have`20found`20'-d'`20*/ X`20`20`20`20Display`20*display;`20`20`20`20`20`20`20`20/*`20Temporary`20displa Vy`20structure`20pointer`20`20`20`20`20*/ X X`20`20`20`20found`20=`20False; X`20`20`20`20/* X`20`20`20`20`20*`20For`20each`20argument`20from`20the`20command`20line,`20comp Vare`20the`20first X`20`20`20`20`20*`20`20`20two`20characters`20with`20-d.`20`20If`20they`20match V`20and`20there`20is`20at`20least X`20`20`20`20`20*`20`20`20one`20remaining`20argument,`20that`20is`20the`20displ Vay`20string-set`20found X`20`20`20`20`20*`20`20`20to`20'true'`20and`20exit`20the`20loop. X`20`20`20`20`20*/ X`20`20`20`20for`20(`20temp_index`20=`201;`20`20temp_index`20<`20argc;`20`20tem Vp_index++`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20if`20(`20strncmp`20(`20argv`5B`20temp_index`20`5D,`20" V-d",`202`20)`20==`200`20) X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20if`20(`20(`20temp_index`20+`201`20)`20<`20 Vargc`20) X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20found`20=`20True;`20`20/*`20ar Vg`20matches`20-d`20and`20at`20least`20one`20more`20exists`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20break; X`20`20`20`20`20`20`20`20`20`20`20`20`7D X`20`20`20`20`20`20`20`20`7D X`20`20`20`20`7D X`20`20`20`20if`20(`20found`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/*`20A`20display`20arg`20was`20found,`20use`20it`20*/ V X`20`20`20`20`20`20`20`20display`20=`20XOpenDisplay`20(`20argv`5B`20++temp_inde Vx`20`5D`20); X`20`20`20`20`7D X`20`20`20`20else X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/*`20No`20display`20arg`20found,`20go`20for`20default V`20device`20with`20the`20null`20string`20*/ X`20`20`20`20`20`20`20`20display`20=`20XOpenDisplay`20(`20""`20); X`20`20`20`20`7D X`20`20`20`20/*`20Check`20the`20return`20value`20from`20XOpenDisplay`20*/ X`20`20`20`20if`20(`20display`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20`20*`20The`20display`20was`20non-null,`20we`20win. V`20`20Close`20the`20display X`20`20`20`20`20`20`20`20`20`20*`20and`20return`20true X`20`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20XCloseDisplay`20(`20display`20); X`20`20`20`20`20`20`20`20return`20(`20True`20); X`20`20`20`20`7D X`20`20`20`20else X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/*`20The`20display`20was`20not`20valid,`20return`20fal Vse`20*/ X`20`20`20`20`20`20`20`20return`20(`20False`20); X X X X`20`20`20`20`7D X`7D X X`0C X Xbuild_xcompute.com X X$! X$!`20Title:`20`20`20`20`20`20`20`20`20`20`20BUILD_XCOMPUTE.COM X$!`20Author:`20`20`20`20`20`20`20`20`20`20Antonino`20N.`20Mione X$!`20Date:`20`20`20`20`20`20`20`20`20`20`20`2021-Jan-1994 X$!`20Abstract:`20`20`20`20`20`20`20`20Com`20file`20to`20build`20example`20prog Vram`20XCOMPUTE X$!`20Execution`20Notes:`20This`20procedure`20compiles`20and`20links`20XCOMPUTE V. X$!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20It`20requi Vres`20XCOMPUTE.C,`20XCOMPUTE.UIL`20and X$!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XCOMPUTE.O VPT`20exist`20in`20the`20same`20directory X$!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20as`20the V`20one`20from`20which`20it`20is`20executing. X$!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X$`20CC`20XCOMPUTE.C X$`20LINK`20XCOMPUTE.OPT/OPTIONS X$`20UIL/MOTIF`20XCOMPUTE.UIL X$! X$`20WRITE`20SYS$OUTPUT`20"To`20execute`20this`20program,`20define`20a`20displa Vy" X$`20WRITE`20SYS$OUTPUT`20"with`20the`20$`20SET`20DISPLAY`20comamnd,`20define V`20the" X$`20WRITE`20SYS$OUTPUT`20"logical`20name`20XCOMPUTE_UID`20to`20point`20at`20th Ve" X$`20WRITE`20SYS$OUTPUT`20"directory`20where`20xcompute.uid`20was`20generated," V X$`20WRITE`20SYS$OUTPUT`20"and`20then`20run`20the`20program." X$`20EXIT X X X`0C X XXcompute.uil X Xmodule`20Xcompute X`20`20`20`20names`20=`20case_sensitive X Xprocedure X`20`20`20`20menuSelectCallback(integer); X`20`20`20`20createCallback(integer); X Xidentifier X`20`20`20`20k_statusField; X`20`20`20`20k_displayForm; X`20`20`20`20k_doComputationButton; X`20`20`20`20k_abortButton; X`20`20`20`20FILE_MENU; X`20`20`20`20FILE_MENU_BASE; X`20`20`20`20DO_COMPUTATION_ITEM; X`20`20`20`20DO_COMPUTATION_ITEM_INDEX; X`20`20`20`20ABORT_ITEM; X`20`20`20`20ABORT_ITEM_INDEX; X`20`20`20`20QUIT_ITEM; X`20`20`20`20QUIT_ITEM_INDEX; X`20`20`20`20EDIT_MENU; X`20`20`20`20EDIT_MENU_BASE; X`20`20`20`20UNDO_ITEM; X`20`20`20`20UNDO_ITEM_INDEX; X`20`20`20`20CUT_ITEM; X`20`20`20`20CUT_ITEM_INDEX; X`20`20`20`20COPY_ITEM; X`20`20`20`20COPY_ITEM_INDEX; X`20`20`20`20PASTE_ITEM; X`20`20`20`20PASTE_ITEM_INDEX; X`20`20`20`20CLEAR_ITEM; X`20`20`20`20CLEAR_ITEM_INDEX; X Xobject X`20`20`20`20mainWindow`20:`20XmMainWindow X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`200; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`200; X`20`20`20`20`20`20`20`20`20`20`20`20XmNborderWidth`20=`201; X`20`20`20`20`20`20`20`20`20`20`20`20XmNwidth`20=`20400; X`20`20`20`20`20`20`20`20`20`20`20`20XmNheight`20=`20100; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20controls X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmForm`20displayForm; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20displayForm`20:`20XmForm X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20true; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20controls X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmMenuBar`20mainMenuBar; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmTextField`20statusField; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20callbacks X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20MrmNcreateCallback`20=`20proce Vdure`20createCallback(k_displayForm); X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20mainMenuBar`20:`20XmMenuBar X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNtopAttachment`20=`20XmATTAC VH_FORM; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNleftAttachment`20=`20XmATTA VCH_FORM; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNrightAttachment`20=`20XmATT VACH_FORM; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNbottomAttachment`20=`20XmAT VTACH_NONE; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20controls X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmCascadeButton`20fileMenuButt Von; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmCascadeButton`20editMenuButt Von; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X X`20`20`20`20statusField:`20XmTextField X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20true; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNeditable`20=`20false; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNtopAttachment`20=`20XmATTAC VH_WIDGET; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNtopWidget`20=`20mainMenuBar V; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNleftAttachment`20=`20XmATTA VCH_FORM; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNrightAttachment`20=`20XmATT VACH_FORM; X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNbottomAttachment`20=`20XmAT VTACH_NONE; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20callbacks X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20MrmNcreateCallback`20=`20proce Vdure`20createCallback(k_statusField); X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X X`20`20`20`20fileMenuButton:`20XmCascadeButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`2012; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`200; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("File"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNwidth`20=`2052; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20controls X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmPulldownMenu`20fileMenu; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20editMenuButton:`20XmCascadeButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`2064; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`200; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Edit"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNwidth`20=`2052; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20controls X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmPulldownMenu`20editMenu; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20fileMenu:`20XmPulldownMenu`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`201; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`20-1; X`20`20`20`20`20`20`20`20`20`20`20`20XmNborderWidth`20=`201; X`20`20`20`20`20`20`20`20`20`20`20`20XmNheight`20=`2017; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20controls X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmPushButton`20doComputationButton; X`20`20`20`20`20`20`20`20`20`20`20`20XmPushButton`20abortButton; X`20`20`20`20`20`20`20`20`20`20`20`20XmPushButton`20quitButton; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20doComputationButton:`20XmPushButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`202; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`204; X`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20true; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Do`20Computation"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNaccelerator`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20"D"; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20callbacks X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNactivateCallback`20=`20proc Vedure`20 XmenuSelectCallback(DO_COMPUTATION_ITEM_INDEX); X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20MrmNcreateCallback`20=`20proce Vdure`20 XcreateCallback(k_doComputationButton); X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20abortButton:`20XmPushButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`202; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`204; X`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20false; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Abort"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNaccelerator`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20"A"; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20callbacks X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNactivateCallback`20=`20proc Vedure`20 XmenuSelectCallback(ABORT_ITEM_INDEX); X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20MrmNcreateCallback`20=`20proce Vdure`20createCallback(k_abortButton); X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20quitButton:`20XmPushButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`202; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`204; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Quit"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNaccelerator`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20"Q"; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20callbacks X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20XmNactivateCallback`20=`20proc Vedure`20 XmenuSelectCallback(QUIT_ITEM_INDEX); X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20editMenu`20:`20XmPulldownMenu`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`2012; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`207; X`20`20`20`20`20`20`20`20`20`20`20`20XmNborderWidth`20=`201; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20controls X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmPushButton`20undoButton; X`20`20`20`20`20`20`20`20`20`20`20`20XmSeparator`20`7B`7D; X`20`20`20`20`20`20`20`20`20`20`20`20XmPushButton`20cutButton; X`20`20`20`20`20`20`20`20`20`20`20`20XmPushButton`20copyButton; X`20`20`20`20`20`20`20`20`20`20`20`20XmPushButton`20pasteButton; X`20`20`20`20`20`20`20`20`20`20`20`20XmPushButton`20clearButton; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20undoButton`20:`20XmPushButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`205; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`203; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Undo"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20false; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20cutButton`20:`20XmPushButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`205; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`203; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Cut"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20false; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20copyButton`20:`20XmPushButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`205; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`203; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Copy"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20false; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20pasteButton`20:`20XmPushButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`205; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`203; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Paste"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20false; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X`20`20`20`20clearButton`20:`20XmPushButton`20 X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20arguments X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20XmNx`20=`205; X`20`20`20`20`20`20`20`20`20`20`20`20XmNy`20=`203; X`20`20`20`20`20`20`20`20`20`20`20`20XmNlabelString`20=`20 X`20`20`20`20`20`20`20`20`20`20`20`20compound_string("Clear"); X`20`20`20`20`20`20`20`20`20`20`20`20XmNsensitive`20=`20false; X`20`20`20`20`20`20`20`20`20`20`20`20`7D; X`20`20`20`20`20`20`20`20`7D; X Xend`20module; X X`0C X XXcompute.c X X/* X**++ X**`20`20FACILITY:`20`20XCOMPUTE X** X**`20`20MODULE`20DESCRIPTION: X** X**`20`20`20`20`20`20This`20program`20performs`20a`20long`20calculation.`20`20T Vhe`20status X**`20`20`20`20`20`20of`20the`20calculation`20can`20be`20toggled`20on`20and`20o Vff.`20`20The X**`20`20`20`20`20`20computation`20can`20also`20be`20interrupted.`20`20This`20p Vrogram`20illustrates X**`20`20`20`20`20`20fetching`20X`20Events`20from`20the`20event`20queue`20using V`20a`20work`20procedure. X** X**`20`20AUTHORS: X** X**`20`20`20`20`20`20Antonino`20N.`20Mione X** X**`20`20CREATION`20DATE:`20`2012-Jan-1994 X** X**`20`20DESIGN`20ISSUES: X** X**`20`20`20`20`20`20None. X** X**-- X*/ X/* X`20*`20Include`20necessary`20X`20and`20Motif`20headers X`20*/ X#include`20 X#include`20 X#include`20 X#include`20 X#include`20 X#include`20`20`20`20`20`20`20`20/*`20Motif`20resource`20manag Ver`20routines`20*/ X#include`20 X#include`20 X X/* X`20*`20Include`20necessary`20C`20and`20VMS`20headers X`20*/ X#include`20stdio X#include`20psldef.h X#include`20ctype X#include`20string X#include`20ctype X#include`20ssdef X#include`20math X X/* X`20*`20Some`20convenient`20buffer`20size`20symbols X`20*/ X#define`20SMALL_BUF_SIZE`2064 X#define`20MEDIUM_BUF_SIZE`20128 X#define`20LARGE_BUF_SIZE`20256 X#define`20HUGE_BUF_SIZE`201024 X X#define`20TEST`20(`20status,`20message`20)`20`20`20`20if`20(`20!(`20status`20 V`26`201`20)`20)`20`7B`20printf`20(`20message`20);`20 Xlib$signal`20(`20status`20);`20`7D X X#define`20MAX_WIDGETS`2080 X X/* X`20*`20Symbols`20used`20for`20callback`20routines`20and`20other`20code`20that V`20needs`20to`20identify X`20*`20which`20member`20of`20the`20widget`20array`20to`20maniuplate. X`20*/ X#define`20k_statusField`200 X#define`20k_displayForm`201 X#define`20k_doComputationButton`202 X#define`20k_abortButton`203 Xint`20interface_realized;`20`20`20`20`20/*`20Flag`20indicating`20if`20XtRealiz Ve`20has`20been`20executed`20*/ Xint`20display_updates;`20`20`20`20`20`20`20`20/*`20Flag`20to`20determine`20if V`20computation`20updates`20should`20 Xbe`20displayed`20*/ Xint`20terminate_computation;`20`20/*`20Flag`20to`20tell`20computation`20routin Ve`20to`20stop`20*/ Xint`20printing_output;`20`20`20`20`20`20`20`20/*`20Flag`20to`20indicate`20whet Vher`20the`20user`20wants`20output`20*/ Xint`20event_check_interval`20=`205000;`20`20`20/*`20Time`20between`20checks`20 Vfor`20keyboard`20events`20*/ Xstatic`20int`20degree_counter;`20`20/*`20Value`20counter`20for`20trig`20comput Vations`20*/ X XDisplay`20*display; XWindow`20window; XCursor`20watch_cursor; X XXtWorkProcId`20computeID; X X/* X`20*`20Symbols`20for`20identifying`20menus`20and`20menu`20items`20in`20callbac Vk`20routines X`20* X`20*`20`20`20`20'_MENU'`20represents`20offset`20of`20the`20menu`20in`20the`20m Venu`20bar X`20*`20`20`20`20'_MENU_BASE'`20represents`20a`20starting`20item`20index. X`20*`20`20`20`20'_ITEM'`20is`20the`20item`20offset`20within`20the`20menu X`20*`20`20`20`20'_ITEM_INDEX'`20is`20an`20item`20index`20which`20represents`20 Vthe`20item`20number X`20*`20`20`20`20`20`20`20`20`20in`20the`20menu`20and`20the`20menu`20in`20which V`20it`20resides.`20`20It`20is X`20*`20`20`20`20`20`20`20`20`20equivalent`20to`201000*menu#+item#. X`20*/ X#define`20FILE_MENU`200 X#define`20FILE_MENU_BASE`200000 X X#define`20DO_COMPUTATION_ITEM`200 X#define`20DO_COMPUTATION_ITEM_INDEX`200000 X#define`20ABORT_ITEM`201 X#define`20ABORT_ITEM_INDEX`200001 X#define`20QUIT_ITEM`202 X#define`20QUIT_ITEM_INDEX`200002 X X#define`20EDIT_MENU`201 X#define`20EDIT_MENU_BASE`201000 X X#define`20UNDO_ITEM`200 X#define`20UNDO_ITEM_INDEX`201000 X#define`20CUT_ITEM`202 X#define`20CUT_ITEM_INDEX`201002 X#define`20COPY_ITEM`203 X#define`20COPY_ITEM_INDEX`201003 X#define`20PASTE_ITEM`204 X#define`20PASTE_ITEM_INDEX`201004 X#define`20CLEAR_ITEM`205 X#define`20CLEAR_ITEM_INDEX`201005 X X/* X`20*`20The`20following`20data`20structures`20describe`20the`20menus`20and`20it Vems`20available X`20*`20in`20this`20application.`20`20These`20structures`20are`20use`20by`20the V`20'create_menus' X`20*`20routine`20to`20build`20the`20menu`20widget`20tree`20for`20the`20applica Vtion. X`20*/ X#define`20MAX_MENUS`202 X XXtAppContext`20context; X X/* X`20*`20Widget`20id`20variables X`20*/ XWidget`20toplevel,`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20Top`20level V`20application`20shell`20widget`20*/ X`20`20`20`20`20`20`20mainWindow, X`20`20`20`20`20`20`20mainMenuBar;`20`20`20`20`20`20`20`20`20`20`20/*`20Main`20 Vmenubar`20widget`20*/ X XWidget`20widget_list`5B`20MAX_WIDGETS`20`5D;`20`20/*`20The`20rest`20of`20the V`20widgets`20defined`20in`20the`20 XUIL`20file`20*/ X Xstatic`20MrmHierarchy`20s_MrmHierarchy; Xstatic`20MrmType`20*dummy_class; Xstatic`20char`20*db_filename_vec`5B`5D`20=`20`7B`20"XCOMPUTE_UID"`20`7D; X X/* X`20*`20Function`20Prototypes X`20*/ Xvoid`20createCallback`20(`20Widget,`20long,`20XmAnyCallbackStruct`20*`20); XBoolean`20computeValues`20(`20XtPointer`20); Xvoid`20checkEventsTOProc`20(`20XtPointer,`20XtIntervalId`20*`20); Xvoid`20menuSelectCallback`20(`20Widget,`20long,`20XmAnyCallbackStruct`20*`20); V X X X X/* X`20*`20reglist`20-`20This`20list`20is`20used`20by`20MrmRegisterNames`20to`20pr Vovide X`20*`20`20`20`20`20`20`20`20`20`20`20a`20runtime`20symbol`20mapping`20for`20th Ve`20widget`20definitions`20in X`20*`20`20`20`20`20`20`20`20`20`20`20the`20UID`20file(s).`20`20This`20list`20m Vay`20include`20integer`20or`20string X`20*`20`20`20`20`20`20`20`20`20`20`20constants`20as`20well`20as`20callback`20r Voutine`20addresses. X`20*/ Xstatic`20MrmRegisterArg`20reglist`5B`5D`20=`20`7B X`20`20`7B`20"menuSelectCallback",`20(caddr_t)`20menuSelectCallback`20`7D, X`20`20`7B`20"createCallback",`20(caddr_t)`20createCallback`20`7D, X`20`20`7B`20"k_statusField",`20(long)`20k_statusField`20`7D, X`20`20`7B`20"k_displayForm",`20(long)`20k_displayForm`20`7D, X`20`20`7B`20"k_doComputationButton",`20(long)`20k_doComputationButton`20`7D, X`20`20`7B`20"k_abortButton",`20(long)`20k_abortButton`20`7D, X`20`20`7B`20"FILE_MENU",`20(long)`20FILE_MENU`20`7D, X`20`20`7B`20"FILE_MENU_BASE",`20(long)`20FILE_MENU_BASE`20`7D, X`20`20`7B`20"DO_COMPUTATION_ITEM",`20(long)`20DO_COMPUTATION_ITEM`20`7D, X`20`20`7B`20"DO_COMPUTATION_ITEM_INDEX",`20(long)`20DO_COMPUTATION_ITEM_INDEX V`20`7D, X`20`20`7B`20"ABORT_ITEM",`20(long)`20ABORT_ITEM`20`7D, X`20`20`7B`20"ABORT_ITEM_INDEX",`20(long)`20ABORT_ITEM_INDEX`20`7D, X`20`20`7B`20"QUIT_ITEM",`20(long)`20QUIT_ITEM`20`7D, X`20`20`7B`20"QUIT_ITEM_INDEX",`20(long)`20QUIT_ITEM_INDEX`20`7D, X`20`20`7B`20"EDIT_MENU",`20(long)`20EDIT_MENU`20`7D, X`20`20`7B`20"EDIT_MENU_BASE",`20(long)`20EDIT_MENU_BASE`20`7D, X`20`20`7B`20"UNDO_ITEM",`20(long)`20UNDO_ITEM`20`7D, X`20`20`7B`20"UNDO_ITEM_INDEX",`20(long)`20UNDO_ITEM_INDEX`20`7D, X`20`20`7B`20"CUT_ITEM",`20(long)`20CUT_ITEM`20`7D, X`20`20`7B`20"CUT_ITEM_INDEX",`20(long)`20CUT_ITEM_INDEX`20`7D, X`20`20`7B`20"COPY_ITEM",`20(long)`20COPY_ITEM`20`7D, X`20`20`7B`20"COPY_ITEM_INDEX",`20(long)`20COPY_ITEM_INDEX`20`7D, X`20`20`7B`20"PASTE_ITEM",`20(long)`20PASTE_ITEM`20`7D, X`20`20`7B`20"PASTE_ITEM_INDEX",`20(long)`20PASTE_ITEM_INDEX`20`7D, X`20`20`7B`20"CLEAR_ITEM",`20(long)`20CLEAR_ITEM`20`7D, X`20`20`7B`20"CLEAR_ITEM_INDEX",`20(long)`20CLEAR_ITEM_INDEX`20`7D X`7D; X X/*`20Number`20of`20elements`20in`20reglist`20*/ Xstatic`20int`20reglist_num`20=`20(`20sizeof`20reglist`20/`20sizeof`20(`20MrmRe VgisterArg`20)`20); X/* X**++ X**`20`20FUNCTIONAL`20DESCRIPTION: X** X**`20`20`20`20`20`20createCallback`20-`20This`20routine`20is`20called`20each V`20time`20a`20widget`20is`20created X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(during V`20the`20MrmFetchWidgetHierarchy`20call(s)).`20`20All`20it X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20does`20 Vis`20store`20the`20id`20of`20the`20created`20widget`20in`20the X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20appropr Viate`20slot`20in`20the`20widget`20array. X** X**`20`20FORMAL`20PARAMETERS: X** X**`20`20`20`20`20`20widgetId`20(input,`20Widget)`20-`20widget`20id`20of`20the V`20created`20widget. X**`20`20`20`20`20`20client_data`20(input,`20integer)`20-`20Client`20data.`20 V`20Integer`20index`20into X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20widget_list`20into`20w Vhich`20widgetId`20should`20be`20stored. X**`20`20`20`20`20`20callback_record`20(input,`20XmAnyCallbackStruct`20*)`20- V`20callback`20information. X** X**`20`20RETURN`20VALUE: X** X**`20`20`20`20`20`20None. X** X**`20`20SIDE`20EFFECTS: X** X**`20`20`20`20`20`20widget_list`20is`20altered. X** X**`20`20DESIGN: X** X**`20`20`20`20`20`20None. X** X**-- X*/ X Xvoid`20createCallback`20(`20Widget`20widgetId,`20long`20client_data,`20XmAnyCa VllbackStruct`20 X*callback_record`20) X`7B X X`20`20widget_list`5B`20client_data`20`5D`20=`20widgetId; X X`7D X X/* X**++ X**`20`20FUNCTIONAL`20DESCRIPTION: X** X**`20`20`20`20`20`20computeValues`20-`20This`20routine`20performs`20the`20long V`20calculations`20and X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20displays V`20updates`20to`20the`20text`20field`20(unless`20updates X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20are`20turn Ved`20off.`20`20It`20proceeds`20until`20it`20is`20finished X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20or`20it`20 Vhas`20been`20aborted`20by`20the`20user. X** X**`20`20FORMAL`20PARAMETERS: X** X**`20`20`20`20`20`20None X** X**`20`20RETURN`20VALUE: X** X**`20`20`20`20`20`20None X** X**`20`20SIDE`20EFFECTS: X** X**`20`20`20`20`20`20None X** X**`20`20DESIGN: X** X**`20`20`20`20`20`20None X** X** X** X**-- X*/ XBoolean`20computeValues`20(`20XtPointer`20client_data`20) X`7B X`20`20`20`20double`20d,`20sinval,`20cosval,`20tanval,`20radians; X`20`20`20`20int`20loop_counter; X`20`20`20`20char`20temp_string`5B`20SMALL_BUF_SIZE`20`5D; X`20`20`20`20static`20first_pass`20=`20True; X X`20`20`20`20/* X`20`20`20`20`20*`20First`20time`20we`20come`20through`20here`20to`20generate V`20a`20table,`20print X`20`20`20`20`20*`20some`20column`20headings. X`20`20`20`20`20*/ X`20`20`20`20if`20(`20first_pass`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20first_pass`20=`20False; X`20`20`20`20`20`20`20`20printf`20(`20"`20Degrees`20`20`20`20`20`20`20`20`20`20 V`20sin`20`20`20`20`20`20`20`20`20`20`20`20cos`20`20`20`20`20`20`20`20`20`20`20 V`20`20tan`5Cn"`20); X`20`20`20`20`7D; X X`20`20`20`20/* X`20`20`20`20`20*`20Do`20the`20calculations`20in`20groups`20of`2050`20table`20l Vines.`20`20Loop`20and X`20`20`20`20`20*`20compute`20the`20sine,`20cosine,`20and`20tangent`20of`20degr Vee_counter`20/`201000. X`20`20`20`20`20*/ X X X X`20`20`20`20for`20(`20loop_counter`20=`200;`20`20loop_counter`20<`2050;`20`20l Voop_counter++`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20*`20If`20the`20calculation`20is`20done`20(0-89.999 V`20degrees),`20or`20if`20the X`20`20`20`20`20`20`20`20`20*`20user`20selected`20ABORT`20from`20the`20menu,`20 Vthen`20return`20without X`20`20`20`20`20`20`20`20`20*`20rescheduling`20the`20work`20procedure. X`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20if`20(`20(`20degree_counter`20>`2089999`20)`20`7C`7C V`20terminate_computation`20) X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20`20`20`20`20*`20If`20user`20restarts`20table,`20he V`20will`20want`20column`20headings.`20Set X`20`20`20`20`20`20`20`20`20`20`20`20`20*`20first_pass`20to`20True. X`20`20`20`20`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20first_pass`20=`20True; X`20`20`20`20`20`20`20`20`20`20`20`20return`20True; X`20`20`20`20`20`20`20`20`7D X`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20*`20Raise`20the`20counter,`20convert`20it`20to`20ra Vidians`20and`20compute X`20`20`20`20`20`20`20`20`20*`20the`20sine,`20cosine,`20and`20tangent. X`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20degree_counter++; X`20`20`20`20`20`20`20`20radians`20=`20(`20(double)`20degree_counter`20/`201000 V.0`20)`20*`20(`203.14159`20/`20360.0`20); X`20`20`20`20`20`20`20`20sinval`20=`20sin`20(`20(double)`20radians`20); X`20`20`20`20`20`20`20`20cosval`20=`20cos(`20(double)`20radians`20); X`20`20`20`20`20`20`20`20tanval`20=`20tan`20(`20(double)`20radians`20); X`20`20`20`20`20`20`20`20if`20(`20printing_output`20) X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20printf`20(`20"`20`20%6.4f`20`20%12.9f`20 V`20`20%12.9f`20`20`20`20%12.9f`5Cn", X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(double)`20degr Vee_counter`20/`201000.0, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20sinval, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20cosval, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20tanval`20); X`20`20`20`20`20`20`20`20`7D X`20`20`20`20`7D X`20`20`20`20/* X`20`20`20`20`20*`20If`20we`20are`20displaying`20progress`20information`20for V`20the`20user, X`20`20`20`20`20*`20write`20the`20iteration`20number`20into`20the`20status`20te Vxt`20field. X`20`20`20`20`20*/ X`20`20`20`20if`20(`20display_updates`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20sprintf`20(`20temp_string,`20"Iteration`20#`20%d",`20d Vegree_counter`20); X`20`20`20`20`20`20`20`20XmTextFieldSetString`20(`20widget_list`5B`20k_statusFi Veld`20`5D,`20temp_string`20); X`20`20`20`20`7D X`20`20`20`20return`20False; X`7D X X/* X**++ X**`20`20FUNCTIONAL`20DESCRIPTION: X** X**`20`20`20`20`20`20menuSelectCallback`20-`20This`20routine`20is`20called`20on V`20any`20activate`20for X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20pushbuttons`20or`20togglebuttons`20that`20are X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20menu`20items. X** X**`20`20FORMAL`20PARAMETERS: X** X**`20`20`20`20`20`20menuItemId`20(input,`20Widget)`20-`20widget`20id`20of`20th Ve`20button`20which`20triggered X**`20`20`20`20`20`20`20`20`20`20`20`20`20this`20callback`20routine. X**`20`20`20`20`20`20client_data`20(input,`20integer)`20-`20Client`20data.`20 V`20One`20of`20the`20#defined X**`20`20`20`20`20`20`20`20`20`20`20`20`20symbols`20for`20identifying`20menu`20 Vitems.`20`20The`20value`20contains X**`20`20`20`20`20`20`20`20`20`20`20`20`20both`20the`20item`20offset`20in`20the V`20menu`20and`20the`20menu`20offset`20in`20the X**`20`20`20`20`20`20`20`20`20`20`20`20`20menu`20bar. X**`20`20`20`20`20`20callback_record`20(input,`20XmAnyCallbackStruct`20*)`20- V`20callback`20information. X** X**`20`20RETURN`20VALUE: X** X**`20`20`20`20`20`20None. X** X**`20`20SIDE`20EFFECTS: X** X**`20`20`20`20`20`20Appropriate`20action`20is`20taken`20based`20on`20menu`20se Vlection. X** X**`20`20DESIGN: X** X**`20`20`20`20`20`20None. X** X**-- X*/ Xvoid`20menuSelectCallback`20(`20Widget`20`20menuItemId,`20long`20client_data, V`20 XXmAnyCallbackStruct`20*callback_record`20) X`7B X`20`20`20`20Arg`20argument_list`5B`2010`20`5D; X`20`20`20`20int`20argument_count; X`20`20`20`20Boolean`20isSet; X X`20`20`20`20/* X`20`20`20`20`20*`20Determine`20action`20based`20on`20which`20menu`20pushbutton V`20was`20'activated'. X`20`20`20`20`20*/ X`20`20`20`20switch`20(`20client_data`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20case`20DO_COMPUTATION_ITEM_INDEX: X`20`20`20`20`20`20`20`20`20`20`20`20/*`20User`20wishes`20to`20start`20the`20co Vmputation.`20`20`20`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20display_updates`20=`20True; X`20`20`20`20`20`20`20`20`20`20`20`20printing_output`20=`20True; X`20`20`20`20`20`20`20`20`20`20`20`20terminate_computation`20=`20False; X`20`20`20`20`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20`20`20`20`20*`20Fetch`20the`20watch`20cursor`20and V`20define`20it`20as`20the`20cursor`20to`20be X`20`20`20`20`20`20`20`20`20`20`20`20`20*`20used`20when`20the`20pointer`20is`20 Vwithin`20'window'.`20`20Then`20free X`20`20`20`20`20`20`20`20`20`20`20`20`20*`20the`20cursor`20definition`20(allow V`20the`20server`20to`20discard`20it`20and X`20`20`20`20`20`20`20`20`20`20`20`20`20*`20reclaim`20the`20memory). X`20`20`20`20`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20watch_cursor`20=`20XCreateFontCursor`20( V`20display,`20XC_watch`20); X`20`20`20`20`20`20`20`20`20`20`20`20XDefineCursor`20(`20display,`20window,`20w Vatch_cursor`20); X`20`20`20`20`20`20`20`20`20`20`20`20XFreeCursor`20(`20display,`20watch_cursor V`20); X`20`20`20`20`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20`20`20`20`20*`20Switch`20sensitivity`20on`20a`20cou Vple`20of`20menu`20items X`20`20`20`20`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20XtSetSensitive`20(`20widget_list`5B`20k_do VComputationButton`20`5D,`20False`20); X`20`20`20`20`20`20`20`20`20`20`20`20XtSetSensitive`20(`20widget_list`5B`20k_ab VortButton`20`5D,`20True`20); X`20`20`20`20`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20`20`20`20`20*`20Register`20the`20work`20procedure V`20to`20do`20all`20the`20computations. X`20`20`20`20`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20degree_counter`20=`200; X`20`20`20`20`20`20`20`20`20`20`20`20computeID`20=`20XtAppAddWorkProc`20(`20con Vtext, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20computeValues, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20(XtPointer)`200`20); X X`20`20`20`20`20`20`20`20`20`20`20`20break; X`20`20`20`20`20`20`20`20case`20ABORT_ITEM_INDEX: X`20`20`20`20`20`20`20`20`20`20`20`20terminate_computation`20=`20True; X`20`20`20`20`20`20`20`20`20`20`20`20XUndefineCursor`20(`20display,`20window`20 V); X`20`20`20`20`20`20`20`20`20`20`20`20XtSetSensitive`20(`20widget_list`5B`20k_do VComputationButton`20`5D,`20True`20); X`20`20`20`20`20`20`20`20`20`20`20`20XtSetSensitive`20(`20widget_list`5B`20k_ab VortButton`20`5D,`20False`20); X`20`20`20`20`20`20`20`20`20`20`20`20break; X`20`20`20`20`20`20`20`20case`20QUIT_ITEM_INDEX: X`20`20`20`20`20`20`20`20`20`20`20`20/*`20User`20wishes`20to`20exit`20the`20app Vlication`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20exit`20(`201`20); X`20`20`20`20`7D`20/*`20switch`20*/ X`20`20`7D X X X/* X**++ X**`20`20FUNCTIONAL`20DESCRIPTION: X** X**`20`20`20`20`20`20findDisplay`20-`20This`20routine`20checks`20for`20the`20ex Vistence`20of X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20an`20X`20Display V.`20`20It`20does`20this`20by`20first`20checking X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20the`20command`20 Vargs`20for`20a`20display`20string.`20`20If`20found, X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20it`20uses`20that V`20string`20in`20an`20XOpenDisplay`20call.`20`20Otherwise, X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20it`20uses`20the V`20NULL`20string`20which`20forces`20XOpenDisplay`20to X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20look`20for`20a V`20DISPLAY`20environment`20variable`20and`20to`20open`20that. X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20If`20the`20routi Vne`20succeeds,`20a`20display`20exists.`20`20Otherwise, X**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20there`20is`20no V`20X`20server`20defined. X** X**`20`20FORMAL`20PARAMETERS: X** X**`20`20`20`20`20`20argc`20-`20(int)`20#`20of`20command`20line`20arguments X**`20`20`20`20`20`20argv`20-`20(char`20*`5B`5D)`20command`20line`20args X** X**`20`20RETURN`20VALUE: X** X**`20`20`20`20`20`20True`20or`20False. X** X**`20`20SIDE`20EFFECTS: X** X**`20`20`20`20`20`20None X** X**`20`20DESIGN: X** X**`20`20`20`20`20`20None X** X** X** X**-- X*/ XBoolean`20findDisplay`20(`20int`20argc,`20char`20*argv`5B`5D`20) X`7B X`20`20`20`20int`20temp_index; X`20`20`20`20Boolean`20found;`20`20`20`20`20`20`20`20`20`20`20/*`20Flag`20to`20 Vindicate`20that`20we`20have`20found`20'-d'`20*/ X`20`20`20`20Display`20*display;`20`20`20`20`20`20`20`20/*`20Temporary`20displa Vy`20structure`20pointer`20`20`20`20`20*/ X X`20`20`20`20found`20=`20False; X`20`20`20`20/* X`20`20`20`20`20*`20For`20each`20argument`20from`20the`20command`20line,`20comp Vare`20the`20first X`20`20`20`20`20*`20`20`20two`20characters`20with`20-d.`20`20If`20they`20match V`20and`20there`20is`20at`20least X`20`20`20`20`20*`20`20`20one`20remaining`20argument,`20that`20is`20the`20displ Vay`20string-set`20found X`20`20`20`20`20*`20`20`20to`20'true'`20and`20exit`20the`20loop. X`20`20`20`20`20*/ X`20`20`20`20for`20(`20temp_index`20=`201;`20`20temp_index`20<`20argc;`20`20tem Vp_index++`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20if`20(`20strncmp`20(`20argv`5B`20temp_index`20`5D,`20" V-d",`202`20)`20==`200`20) X`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20if`20(`20(`20temp_index`20+`201`20)`20<`20 Vargc`20) X`20`20`20`20`20`20`20`20`20`20`20`20`7B X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20found`20=`20True;`20/*`20arg V`20matches`20-d`20and`20at`20least`20one`20more`20exists`20*/ X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20break; X`20`20`20`20`20`20`20`20`20`20`20`20`7D X`20`20`20`20`20`20`20`20`7D X`20`20`20`20`7D X`20`20`20`20if`20(`20found`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/*`20A`20display`20arg`20was`20found,`20use`20it`20*/ V X`20`20`20`20`20`20`20`20display`20=`20XOpenDisplay`20(`20argv`5B`20++temp_inde Vx`20`5D`20); X`20`20`20`20`7D X`20`20`20`20else X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/*`20No`20display`20arg`20found,`20go`20for`20default V`20device`20with`20the`20null`20string`20*/ X`20`20`20`20`20`20`20`20display`20=`20XOpenDisplay`20(`20""`20); X`20`20`20`20`7D X`20`20`20`20/*`20Check`20the`20return`20value`20from`20XOpenDisplay`20*/ X`20`20`20`20if`20(`20display`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/* X`20`20`20`20`20`20`20`20`20*`20The`20display`20was`20non-null,`20we`20win.`20 V`20Close`20the`20display X`20`20`20`20`20`20`20`20`20*`20and`20return`20true X`20`20`20`20`20`20`20`20`20*/ X`20`20`20`20`20`20`20`20XCloseDisplay`20(`20display`20); X`20`20`20`20`20`20`20`20return`20(`20True`20); X`20`20`20`20`7D X`20`20`20`20else X`20`20`20`20`7B X`20`20`20`20`20`20`20`20/*`20The`20display`20was`20not`20valid,`20return`20fal Vse`20*/ X`20`20`20`20`20`20`20`20return`20(`20False`20); X`20`20`20`20`7D X`7D X X X/* X**++ X**`20`20FUNCTIONAL`20DESCRIPTION: X** X**`20`20`20`20`20`20main`20-`20This`20routine`20sets`20up`20the`20application V`20context,`20calls`20routines X**`20`20`20`20`20`20`20`20`20`20`20`20`20initialize`20the`20menus`20and`20the V`20remaining`20widgets,`20realizes X**`20`20`20`20`20`20`20`20`20`20`20`20`20the`20interface`20and`20calls`20XtApp VMainLoop`20to`20process`20events. X** X**`20`20FORMAL`20PARAMETERS: X** X**`20`20`20`20`20`20argc`20(input,`20int)`20-`20Number`20of`20command`20line V`20arguments X**`20`20`20`20`20`20argv`20(input,`20char`20*`5B`5D)`20-`20Array`20of`20pointe Vrs`20to`20command`20line`20arguments X** X**`20`20RETURN`20VALUE: X** X**`20`20`20`20`20`20True`20-`20program`20exited`20normally X**`20`20`20`20`20`20False`20-`20Program`20encountered`20an`20error. X** X**`20`20SIDE`20EFFECTS: X** X**`20`20`20`20`20`20None. X** X**`20`20DESIGN: X** X**`20`20`20`20`20`20None. X** X**-- X*/ Xmain`20(`20int`20argc,`20char`20*argv`5B`5D`20) X`7B X`20`20`20`20Arg`20`20`20`20argument_list`5B`2010`20`5D; X`20`20`20`20int`20`20`20`20argument_count; X`20`20`20`20char`20`20`20temp_string`5B`20LARGE_BUF_SIZE`20`5D, X`20`20`20`20`20`20`20`20`20`20`20temp_string2`5B`20LARGE_BUF_SIZE`20`5D; X`20`20`20`20int`20status; X`20`20`20`20int`20`20`20`20local_argc; X`20`20`20`20char`20`20`20*local_argv; X X`20`20`20`20interface_realized`20=`20False;`20`20`20`20/*`20Motif`20interface V`20not`20available`20yet`20*/ X X`20`20`20`20if`20(`20!`20findDisplay`20(`20argc,`20argv`20)`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20printf`20(`20"This`20program`20requires`20an`20X`20dis Vplay`5Cn"`20); X`20`20`20`20`20`20`20`20exit`20(`200`20); X`20`20`20`20`7D; X X`20`20`20`20MrmInitialize`20();`20`20`20`20`20`20`20`20`20`20`20`20`20`20/*`20 VInitialize`20the`20Motif`20resource`20manager`20 Xlibrary`20*/ X X`20`20`20`20/*`20Initialize`20the`20toolkit`20*/ X`20`20`20`20toplevel`20=`20XtAppInitialize`20(`20`26context,`20 X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20"Xcompute", X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20NULL,`20 X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`200,`20 X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`26argc, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20argv, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20NULL, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20NULL, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`200`20); X X X`20`20`20`20/* X`20`20`20`20`20*`20This`20call`20opens`20the`20UID`20file(s).`20`20If`20it`20i Vs`20not`20successful,`20print X`20`20`20`20`20*`20an`20error`20and`20exit. X`20`20`20`20`20*/ X`20`20`20`20if`20(`20MrmOpenHierarchy`20(`201, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20db_filename_vec, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20NULL, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`26s_MrmHierarchy`20)`20!=`20MrmSUCCESS`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20printf`20(`20"can't`20open`20hierarchy`5Cn"`20); X`20`20`20`20`20`20`20`20exit`20(`200`20); X`20`20`20`20`7D X X`20`20`20`20/* X`20`20`20`20`20*`20Register`20the`20symbols`20for`20the`20UID`20code X`20`20`20`20`20*/ X`20`20`20`20status`20=`20MrmRegisterNames`20(`20reglist,`20reglist_num`20); X X`20`20`20`20/* X`20`20`20`20`20*`20If`20the`20above`20call`20failed,`20print`20an`20error`20an Vd`20exit. X`20`20`20`20`20*/ X`20`20`20`20if`20(`20status`20!=`20MrmSUCCESS`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20printf`20(`20"Error`20registering`20names!!!`20code`20 V=`20%d`5Cn",`20status`20); X`20`20`20`20`20`20`20`20exit`20(`200`20); X`20`20`20`20`7D; X X`20`20`20`20/* X`20`20`20`20`20*`20Fetch`20the`20whole`20interface. X`20`20`20`20`20*/ X`20`20`20`20status`20=`20MrmFetchWidget`20(`20s_MrmHierarchy, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20"mainWindow", X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20toplevel, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`26mainWindow, X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`26dummy_class`20); X X`20`20`20`20/* X`20`20`20`20`20*`20If`20that`20failed,`20there`20is`20no`20sense`20continuing. V`20`20Print`20an`20error`20and`20exit. X`20`20`20`20`20*/ X`20`20`20`20if`20(`20status`20!=`20MrmSUCCESS`20) X`20`20`20`20`7B X`20`20`20`20`20`20`20`20printf`20(`20"Error`20fetching`20widgets!!!`20code`20= V`20%d`5Cn",`20status`20); X`20`20`20`20`20`20`20`20exit`20(`200`20); X`20`20`20`20`7D; X X`20`20`20`20/* X`20`20`20`20`20*`20Manage`20the`20top`20level`20widget. X`20`20`20`20`20*/ X`20`20`20`20XtManageChild`20(`20mainWindow`20); X`20`20`20`20XtRealizeWidget`20(`20toplevel`20);`20/*`20Realize`20the`20interfa Vce.`20*/ X`20`20`20`20interface_realized`20=`20True;`20`20`20`20/*`20Note`20that`20Motif V`20interface`20is`20available.`20*/ X X`20`20`20`20display`20=`20XtDisplay`20(`20widget_list`5B`20k_displayForm`20`5D V`20); X`20`20`20`20window`20=`20XtWindow`20(`20widget_list`5B`20k_displayForm`20`5D V`20); X X`20`20`20`20XtAppMainLoop`20(`20context`20);`20`20`20`20/*`20Go`20process`20ev Vents`20*/ X`7D X X $ call unpack SWITCH.DSJ;1 926181592 "" 55 1 1 $ v=f$verify(v) $ exit