000000* AppletHome 000010* 000020* Author. Brian Sullivan. 000030* 000040* Copyright 1997-1998 LegacyJ Corporation. All rights reserved. 000050* 000060* This program display a Graphical User Interface using 000070* LegacyJ syntax from within either an application or 000080* an applet. Make selections of the number of bedrooms, 000090* bathrooms, and price range to have the matching houses 000100* displayed. 000110* 000120* Select houses with one more bedroom than bathroom to see 000130* actual houses. 000140* 000150* The program has a typical DATA DIVISION structure for 000160* a COBOL program, but with an unusual twist. The FRAME 000170* is the top of the GUI elements, with a layout (the 000180* GridBagLayout in this case) below it as a child. 000190* 000200* Each graphical element in turn is a child of another 000210* Java container. 000220* 000230* Most of the elements of the Graphical DATA DIVISION 000240* are self-explanatory with a knowledge of Java; the 000250* CONSTRAINT is the only odd one out, with a specification 000260* of XXYYWWHHSAA 000270* XX: X Grid Position S Stretching (N,H,V,B) 000280* YY: Y Grid Position AA Anchor (C,N,S,E,W,NE,SE,NW,SW) 000290* WW: Width in Grid Positions 000300* HH: Height in Grid Position 000310 IDENTIFICATION DIVISION. 000320 PROGRAM-ID. AppletHome. 000330 ENVIRONMENT DIVISION. 000340 CONFIGURATION SECTION. 000350 000360 DATA DIVISION. 000370 WORKING-STORAGE SECTION. 000380 000390 01 SEARCH-FOUND PIC 9(3) VALUE 0. 000400 01 SEARCH-INDEX PIC 9(3) VALUE 0. 000410 01 SEARCH-MINPRICE PIC 9(7). 000420 01 SEARCH-MAXPRICE PIC 9(7). 000430 000440 01 HOUSE-ARRAY OCCURS 15 TIMES. 000450 05 ADDRESS0 PIC X(70). 000460 05 BEDROOM PIC 9. 000470 05 BATHROOM PIC 9. 000480 05 PRICE PIC 9(7). 000490 05 CITY PIC X. 000500 05 OUTSIDE PIC X(11). 000510 05 FLOORPLAN PIC X(11). 000520 000530 01 HOUSES-LIST REDEFINES HOUSE-ARRAY. 000540 05 HOUSE01. 000550 10 ADDRESS0 PIC X(70) VALUE 000560 "17 Camelot Dr. ($100,000)". 000570 10 BEDROOM PIC 9 VALUE 2. 000580 10 BATHROOM PIC 9 VALUE 1. 000590 10 PRICE PIC 9(7) VALUE 100000. 000600 10 CITY PIC X VALUE "C". 000610 10 OUTSIDE PIC X(11) VALUE "house01.jpg". 000620 10 FLOORPLAN PIC X(11) VALUE "floor01.jpg". 000630 05 HOUSE02. 000640 10 ADDRESS0 PIC X(70) VALUE 000650 "2805 E. Vancouver ($750,000)". 000660 10 BEDROOM PIC 9 VALUE 4. 000670 10 BATHROOM PIC 9 VALUE 3. 000680 10 PRICE PIC 9(7) VALUE 750000. 000690 10 CITY PIC X VALUE "S". 000700 10 OUTSIDE PIC X(11) VALUE "house02.jpg". 000710 10 FLOORPLAN PIC X(11) VALUE "floor02.jpg". 000720 05 HOUSE03. 000730 10 ADDRESS0 PIC X(70) VALUE 000740 "822 N. Lincoln ($500,000)". 000750 10 BEDROOM PIC 9 VALUE 3. 000760 10 BATHROOM PIC 9 VALUE 2. 000770 10 PRICE PIC 9(7) VALUE 500000. 000780 10 CITY PIC X VALUE "M". 000790 10 OUTSIDE PIC X(11) VALUE "house03.jpg". 000800 10 FLOORPLAN PIC X(11) VALUE "floor03.jpg". 000810 05 HOUSE04. 000820 10 ADDRESS0 PIC X(70) VALUE 000830 "824 N. Lincoln ($950,000)". 000840 10 BEDROOM PIC 9 VALUE 5. 000850 10 BATHROOM PIC 9 VALUE 4. 000860 10 PRICE PIC 9(7) VALUE 950000. 000870 10 CITY PIC X VALUE "P". 000880 10 OUTSIDE PIC X(11) VALUE "house04.jpg". 000890 10 FLOORPLAN PIC X(11) VALUE "floor04.jpg". 000900 05 HOUSE05. 000910 10 ADDRESS0 PIC X(70) VALUE 000920 "1523 Willham South ($625,000)". 000930 10 BEDROOM PIC 9 VALUE 4. 000940 10 BATHROOM PIC 9 VALUE 3. 000950 10 PRICE PIC 9(7) VALUE 625000. 000960 10 CITY PIC X VALUE "F". 000970 10 OUTSIDE PIC X(11) VALUE "house05.jpg". 000980 10 FLOORPLAN PIC X(11) VALUE "floor05.jpg". 000990 05 HOUSE06. 001000 10 ADDRESS0 PIC X(70) VALUE 001010 "12 Washington Court. ($425,000)". 001020 10 BEDROOM PIC 9 VALUE 3. 001030 10 BATHROOM PIC 9 VALUE 2. 001040 10 PRICE PIC 9(7) VALUE 425000. 001050 10 CITY PIC X VALUE "C". 001060 10 OUTSIDE PIC X(11) VALUE "house06.jpg". 001070 10 FLOORPLAN PIC X(11) VALUE "floor01.jpg". 001080 05 HOUSE07. 001090 10 ADDRESS0 PIC X(70) VALUE 001100 "14932 Jefferson Rd. ($675,000)". 001110 10 BEDROOM PIC 9 VALUE 4. 001120 10 BATHROOM PIC 9 VALUE 3. 001130 10 PRICE PIC 9(7) VALUE 675000. 001140 10 CITY PIC X VALUE "M". 001150 10 OUTSIDE PIC X(11) VALUE "house07.jpg". 001160 10 FLOORPLAN PIC X(11) VALUE "floor02.jpg". 001170 05 HOUSE08. 001180 10 ADDRESS0 PIC X(70) VALUE 001190 "21470 Browne Dr. ($575,000)". 001200 10 BEDROOM PIC 9 VALUE 3. 001210 10 BATHROOM PIC 9 VALUE 2. 001220 10 PRICE PIC 9(7) VALUE 575000. 001230 10 CITY PIC X VALUE "S". 001240 10 OUTSIDE PIC X(11) VALUE "house08.jpg". 001250 10 FLOORPLAN PIC X(11) VALUE "floor03.jpg". 001260 05 HOUSE09. 001270 10 ADDRESS0 PIC X(70) VALUE 001280 "21472 Happy Valley Dr. ($1,000,000)". 001290 10 BEDROOM PIC 9 VALUE 5. 001300 10 BATHROOM PIC 9 VALUE 4. 001310 10 PRICE PIC 9(7) VALUE 1000000. 001320 10 CITY PIC X VALUE "F". 001330 10 OUTSIDE PIC X(11) VALUE "house09.jpg". 001340 10 FLOORPLAN PIC X(11) VALUE "floor04.jpg". 001350 05 HOUSE10. 001360 10 ADDRESS0 PIC X(70) VALUE 001370 "4538 Vancouver Ct. ($275,000)". 001380 10 BEDROOM PIC 9 VALUE 2. 001390 10 BATHROOM PIC 9 VALUE 1. 001400 10 PRICE PIC 9(7) VALUE 275000. 001410 10 CITY PIC X VALUE "P". 001420 10 OUTSIDE PIC X(11) VALUE "house10.jpg". 001430 10 FLOORPLAN PIC X(11) VALUE "floor05.jpg". 001440 05 HOUSE11. 001450 10 ADDRESS0 PIC X(70) VALUE 001460 "527 Rio Sancho Blvd. ($790,000)". 001470 10 BEDROOM PIC 9 VALUE 4. 001480 10 BATHROOM PIC 9 VALUE 3. 001490 10 PRICE PIC 9(7) VALUE 790000. 001500 10 CITY PIC X VALUE "C". 001510 10 OUTSIDE PIC X(11) VALUE "house11.jpg". 001520 10 FLOORPLAN PIC X(11) VALUE "floor01.jpg". 001530 05 HOUSE12. 001540 10 ADDRESS0 PIC X(70) VALUE 001550 "13419 Valley View Rd. ($355,000)". 001560 10 BEDROOM PIC 9 VALUE 2. 001570 10 BATHROOM PIC 9 VALUE 1. 001580 10 PRICE PIC 9(7) VALUE 355000. 001590 10 CITY PIC X VALUE "M". 001600 10 OUTSIDE PIC X(11) VALUE "house12.jpg". 001610 10 FLOORPLAN PIC X(11) VALUE "floor02.jpg". 001620 05 HOUSE13. 001630 10 ADDRESS0 PIC X(70) VALUE 001640 "144 Monterey Pkwy. ($590,000)". 001650 10 BEDROOM PIC 9 VALUE 3. 001660 10 BATHROOM PIC 9 VALUE 2. 001670 10 PRICE PIC 9(7) VALUE 590000. 001680 10 CITY PIC X VALUE "F". 001690 10 OUTSIDE PIC X(11) VALUE "house13.jpg". 001700 10 FLOORPLAN PIC X(11) VALUE "floor03.jpg". 001710 05 HOUSE14. 001720 10 ADDRESS0 PIC X(70) VALUE 001730 "121691 Ridge Rd. ($430,000)". 001740 10 BEDROOM PIC 9 VALUE 2. 001750 10 BATHROOM PIC 9 VALUE 1. 001760 10 PRICE PIC 9(7) VALUE 430000. 001770 10 CITY PIC X VALUE "S". 001780 10 OUTSIDE PIC X(11) VALUE "house14.jpg". 001790 10 FLOORPLAN PIC X(11) VALUE "floor04.jpg". 001800 05 HOUSE15. 001810 10 ADDRESS0 PIC X(70) VALUE 001820 "26417 Constitution Ave. ($360,000)". 001830 10 BEDROOM PIC 9 VALUE 3. 001840 10 BATHROOM PIC 9 VALUE 2. 001850 10 PRICE PIC 9(7) VALUE 360000. 001860 10 CITY PIC X VALUE "P". 001870 10 OUTSIDE PIC X(11) VALUE "house15.jpg". 001880 10 FLOORPLAN PIC X(11) VALUE "floor05.jpg". 001890 001900 01 MAIN-FRAME. 001910 02 APPLET PIC X(31) VALUE "LegacyJ PERCobol (Dream Home)". 001920 05 EVENTTYPE PIC X(2). 001930 05 EVENTARG PIC X(5). 001940 05 EVENTWX PIC X. 001950 05 BACKGROUND PIC X(10) VALUE "Light-Grey". 001960 05 MENU PIC X(10) VALUE "Home Menu". 001970 10 FDEMO PIC X(4) VALUE "File". 001980 15 FPRINT PIC X(5) VALUE "Print". 001990 15 FABOUT PIC X(5) VALUE "About". 002000 15 FILLER PIC X(1) VALUE "-". 002010 15 FEXIT PIC X(4) VALUE "Exit". 002020 05 GRIDBAG-LAYOUT. 002030 10 SEARCH-BUTTON. 002040 15 CONSTRAINT PIC X(10) VALUE "04130101NC". 002050 20 BUTTON PIC X(6) VALUE "Search". 002060 25 VISIBLE PIC X VALUE "Y". 002070 10 VIEW-BUTTON. 002080 15 CONSTRAINT PIC X(10) VALUE "06130101NC". 002090 20 BUTTON PIC X(4) VALUE "View". 002100 10 BED-LABEL. 002110 15 CONSTRAINT PIC X(10) VALUE "01060301NC". 002120 20 TEXTLABEL PIC X(8) VALUE "Bedrooms". 002130 10 BATH-LABEL. 002140 15 CONSTRAINT PIC X(10) VALUE "04060301NC". 002150 20 TEXTLABEL PIC X(9) VALUE "Bathrooms". 002160 10 PRICE-LABEL. 002170 15 CONSTRAINT PIC X(10) VALUE "07060401NC". 002180 20 TEXTLABEL PIC X(11) VALUE "Price Range". 002190 10 MIN-LABEL. 002200 15 CONSTRAINT PIC X(10) VALUE "10070101NC". 002210 20 TEXTLABEL PIC X(3) VALUE "Min". 002220 10 MAX-LABEL. 002230 15 CONSTRAINT PIC X(10) VALUE "10080101NC". 002240 20 TEXTLABEL PIC X(3) VALUE "Max". 002250 10 BED-CHOICE. 002260 15 CONSTRAINT PIC X(10) VALUE "01070302NC". 002270 20 CHOICE PIC 9(3) VALUE 1. 002280 25 CHOICE-1 PIC X(11) VALUE 002290 "One Bedroom". 002300 25 CHOICE-2 PIC X(11) VALUE 002310 "Two Bedroom". 002320 25 CHOICE-3 PIC X(13) VALUE 002330 "Three Bedroom". 002340 25 CHOICE-4 PIC X(12) VALUE 002350 "Four Bedroom". 002360 25 CHOICE-5 PIC X(12) VALUE 002370 "Five Bedroom". 002380 10 BATH-CHOICE. 002390 15 CONSTRAINT PIC X(10) VALUE "04070302NC". 002400 20 CHOICE PIC 9(3) VALUE 1. 002410 25 CHOICE-1 PIC X(12) VALUE 002420 "One Bathroom". 002430 25 CHOICE-2 PIC X(12) VALUE 002440 "Two Bathroom". 002450 25 CHOICE-3 PIC X(14) VALUE 002460 "Three Bathroom". 002470 25 CHOICE-4 PIC X(13) VALUE 002480 "Four Bathroom". 002490 10 MINPRICE. 002500 15 CONSTRAINT PIC X(10) VALUE "07070301HC". 002510 20 TEXTFIELD PIC $$,$$$,$$$ VALUE "$0". 002520 25 MODE-SET PIC X VALUE "c". 002530 10 MAXPRICE. 002540 15 CONSTRAINT PIC X(10) VALUE "07080301HC". 002550 20 TEXTFIELD PIC $$,$$$,$$$ VALUE 002560 "$9,999,999". 002570 25 MODE-SET PIC X VALUE "c". 002580 10 SEARCHBOX. 002590 15 CONSTRAINT PIC X(10) VALUE "01101003HC". 002600 20 LIST PIC 9(3). 002610 25 EVENTAE PIC X. 002620 25 ADDRESS0 PIC X(75) OCCURS ZERO TO 15 TIMES 002630 DEPENDING ON SEARCH-FOUND. 002640 10 HOUSEGIF. 002650 15 CONSTRAINT PIC X(10) VALUE "01010404NC". 002660 20 IMAGE PIC X(11) VALUE "house01.jpg". 002670 25 WIDTH PIC 9(3) VALUE 200. 002680 25 HEIGHT PIC 9(3) VALUE 200. 002690 10 FLOORGIF. 002700 15 CONSTRAINT PIC X(10) VALUE "07010404NC". 002710 20 IMAGE PIC X(11) VALUE "floor01.jpg". 002720 25 WIDTH PIC 9(3) VALUE 200. 002730 25 HEIGHT PIC 9(3) VALUE 200. 002740 002750* An About frame to give information about the program. 002760* 002770* This shows a second frame active at the same time as 002780* well as an example using fonts and a different 002790* color. 002800 002810 01 ABOUT-FRAME. 002820 05 FRAME PIC X(9) VALUE "LegacyJ". 002830 10 EVENTWX. 002840 10 BACKGROUND PIC X(4) VALUE "Cyan". 002850 10 BORDER-LAYOUT. 002860 15 NORTH. 002870 20 TEXTLABEL PIC X(35) 002880 VALUE "DreamHome (C)1998-1999 LegacyJ Corp.". 002890 25 FONT PIC X(5) VALUE "Serif". 002900 30 BOLD-FONT PIC X. 002910 30 SIZE-FONT PIC 99 VALUE 24. 002920 15 SOUTH. 002930 20 TEXTLABEL PIC X(33) 002940 VALUE "Written by Brian Sullivan". 002950 25 FONT PIC X(10) VALUE "SansSerif". 002960 30 FOREGROUND PIC X(9) VALUE "Dark-Grey". 002970 30 ITALIC-FONT PIC X. 002980 30 SIZE-FONT PIC 99 VALUE 12. 002990 003000* Have only one about-frame active at a time so that 003010* the events are always attached only to the correct frame. 003020 003030 01 ABOUT-FRAME-ACTIVE PIC 9 VALUE 0. 003040 003050 PROCEDURE DIVISION. 003060 003070 003080 MAIN-ENTRY. 003090 003100 STOP RUN. 003110 003120 003130 SEARCH-HANDLER. 003140 003150 MOVE 1 TO SEARCH-INDEX 003160 MOVE 0 TO SEARCH-FOUND 003170 MOVE TEXTFIELD OF MINPRICE TO SEARCH-MINPRICE 003180 MOVE TEXTFIELD OF MAXPRICE TO SEARCH-MAXPRICE 003190 PERFORM UNTIL SEARCH-INDEX > 15 003200 IF BEDROOM OF HOUSE-ARRAY (SEARCH-INDEX) = 003210 CHOICE OF BED-CHOICE AND 003220 BATHROOM OF HOUSE-ARRAY (SEARCH-INDEX) = 003230 CHOICE OF BATH-CHOICE AND 003240 PRICE OF HOUSE-ARRAY (SEARCH-INDEX) >= SEARCH-MINPRICE 003250 AND 003260 PRICE OF HOUSE-ARRAY (SEARCH-INDEX) <= SEARCH-MAXPRICE 003270 THEN 003280 ADD 1 TO SEARCH-FOUND 003290 MOVE ADDRESS0 OF HOUSE-ARRAY (SEARCH-INDEX) 003300 TO ADDRESS0 OF SEARCHBOX (SEARCH-FOUND) 003310 END-IF 003320 ADD 1 TO SEARCH-INDEX 003330 END-PERFORM 003340 003350 IF SEARCH-FOUND=0 THEN 003360 ADD 1 TO SEARCH-FOUND 003370 MOVE 003380 "No matches found (use one more bedroom than bathroom)" 003390 TO ADDRESS0 OF SEARCHBOX (SEARCH-FOUND) 003400 END-IF 003410 003420 BUILD 003430 LIST OF SEARCHBOX 003440 END-BUILD 003450 003460* Exit the event thread. 003470 003480 EXIT PROGRAM. 003490 003500 003510 VIEW-HANDLER. 003520 003530 MOVE LIST OF SEARCHBOX TO SEARCH-FOUND 003540 MOVE 1 TO SEARCH-INDEX 003550 PERFORM UNTIL SEARCH-INDEX > 15 003560 IF ADDRESS0 OF HOUSE-ARRAY (SEARCH-INDEX) = 003570 ADDRESS0 OF SEARCHBOX (SEARCH-FOUND) 003580 THEN 003590 MOVE OUTSIDE OF HOUSE-ARRAY (SEARCH-INDEX) 003600 TO IMAGE OF HOUSEGIF 003610 MOVE FLOORPLAN OF HOUSE-ARRAY (SEARCH-INDEX) 003620 TO IMAGE OF FLOORGIF 003630 BUILD 003640 IMAGE OF HOUSEGIF 003650 IMAGE OF FLOORGIF 003660 END-BUILD 003670 END-IF 003680 ADD 1 TO SEARCH-INDEX 003690 END-PERFORM 003700 003710* Exit the event thread. 003720 003730 EXIT PROGRAM. 003740 003750 003760 FRAME-HANDLER. 003770 003780 HIDE 003790 APPLET OF MAIN-FRAME 003800 END-HIDE 003810 003820 EXIT ALL PROGRAM. 003830 003840 ABOUT-EXIT. 003850 003860 HIDE 003870 FRAME OF ABOUT-FRAME 003880 END-HIDE 003890 003900 MOVE 0 TO ABOUT-FRAME-ACTIVE 003910 003920 EXIT PROGRAM. 003930 003940 ABOUT-FRAME-BUILDER. 003950 003960 IF ABOUT-FRAME-ACTIVE NOT = 0 THEN 003970 EXIT PROGRAM 003980 END-IF 003990 004000 MOVE 1 TO ABOUT-FRAME-ACTIVE 004010 004020 BUILD 004030 FRAME OF ABOUT-FRAME 004040 END-BUILD 004050 004060 EVENT 004070 FRAME OF ABOUT-FRAME ABOUT-EXIT 004080 END-EVENT 004090 004100 EXIT PROGRAM. 004110 004120 PRINT-HANDLER. 004130 SHOW APPLET OF MAIN-FRAME UPON PRINTER. 004140* BUILD FRAME OF ABOUT-FRAME WITH NO SHOW. 004150* SHOW FRAME OF ABOUT-FRAME UPON PRINTER. 004160* HIDE FRAME OF ABOUT-FRAME. 004170 EXIT PROGRAM. 004180 004190 APPLET-INIT. 004200 . 004210 004220 APPLET-START. 004230 004240 004250 BUILD 004260 APPLET OF MAIN-FRAME 004270 END-BUILD 004280 004290 EVENT 004300 BUTTON OF SEARCH-BUTTON SEARCH-HANDLER 004310 END-EVENT 004320 004330 EVENT 004340 BUTTON OF VIEW-BUTTON VIEW-HANDLER 004350 END-EVENT 004360 004370 EVENT 004380 LIST OF SEARCHBOX VIEW-HANDLER 004390 END-EVENT 004400 004410 EVENT 004420 APPLET OF MAIN-FRAME FRAME-HANDLER 004430 END-EVENT 004440 004450 EVENT FEXIT OF FDEMO FRAME-HANDLER END-EVENT 004460 EVENT FABOUT OF FDEMO ABOUT-FRAME-BUILDER END-EVENT 004470 EVENT FPRINT OF FDEMO PRINT-HANDLER END-EVENT 004480 PERFORM SEARCH-HANDLER 004490 . 004500 004510 APPLET-STOP. 004520 004530 004540 HIDE 004550 APPLET OF MAIN-FRAME 004560 END-HIDE. 004570 004580 APPLET-DESTROY. 004590 . 004600 004610 APPLICATION-INIT. 004620 004630 004640 BUILD 004650 APPLET OF MAIN-FRAME 004660 END-BUILD 004670 004680 EVENT 004690 BUTTON OF SEARCH-BUTTON SEARCH-HANDLER 004700 END-EVENT 004710 004720 EVENT 004730 BUTTON OF VIEW-BUTTON VIEW-HANDLER 004740 END-EVENT 004750 004760 EVENT 004770 LIST OF SEARCHBOX VIEW-HANDLER 004780 END-EVENT 004790 004800 EVENT 004810 APPLET OF MAIN-FRAME FRAME-HANDLER 004820 END-EVENT 004830 004840 EVENT FEXIT OF FDEMO FRAME-HANDLER END-EVENT 004850 EVENT FABOUT OF FDEMO ABOUT-FRAME-BUILDER END-EVENT 004860 EVENT FPRINT OF FDEMO PRINT-HANDLER END-EVENT 004870 PERFORM SEARCH-HANDLER 004880 . 004890 004900 APPLICATION-START. 004910 004920 . 004930 004940 APPLICATION-STOP. 004950 004960 . 004970 004980 APPLICATION-DESTROY. 004990 005000 .