Added capital works blank section. Synced calling screen.
[capital-apms-progress.git] / process / postcode.p
blob0787c6e4cc3b60309e93c119683d3f7cb3187f44
1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r2 GUI
2 &ANALYZE-RESUME
3 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
4 /*--------------------------------------------------------------------------
5 File :
6 Purpose :
8 Syntax :
10 Description :
12 Author(s) :
13 Created :
14 Notes :
15 ------------------------------------------------------------------------*/
16 /* This .W file was created with the Progress UIB. */
17 /*----------------------------------------------------------------------*/
19 /* *************************** Definitions ************************** */
21 /* _UIB-CODE-BLOCK-END */
22 &ANALYZE-RESUME
26 /* *********************** Procedure Settings ************************ */
28 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
29 /* Settings for THIS-PROCEDURE
30 Type: Procedure
31 Allow:
32 Frames: 0
33 Add Fields to: Neither
34 Other Settings: CODE-ONLY COMPILE
36 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
38 /* ************************* Create Window ************************** */
40 &ANALYZE-SUSPEND _CREATE-WINDOW
41 /* DESIGN Window definition (used by the UIB)
42 CREATE WINDOW Procedure ASSIGN
43 HEIGHT = .45
44 WIDTH = 29.72.
46 &ANALYZE-RESUME
51 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
54 /* *************************** Main Block *************************** */
55 DEF INPUT PARAMETER locale AS CHAR FORMAT "X(25)" INITIAL "" NO-UNDO.
56 DEF INPUT PARAMETER in-state AS CHAR FORMAT "X(10)" INITIAL "" NO-UNDO.
57 DEF OUTPUT PARAMETER matching-postcode AS CHAR INITIAL ? NO-UNDO.
59 DEF VAR w1 AS WIDGET-HANDLE NO-UNDO.
60 CREATE WINDOW w1
61 ASSIGN WIDTH-CHARS = 68
62 HEIGHT-CHARS = 18
63 MESSAGE-AREA = NO
64 TITLE = "Postal Code Search".
66 DEF VAR postcode-line AS CHAR NO-UNDO.
67 DEF VAR test-value AS CHAR NO-UNDO.
68 DEF VAR test-length AS INTEGER NO-UNDO.
69 DEF VAR some-found AS LOGICAL INITIAL no NO-UNDO.
71 DEF VAR postcode AS CHAR LABEL "Code" FORMAT "X(4)" INITIAL ? NO-UNDO.
72 DEF VAR out-locale AS CHAR LABEL "Location name" FORMAT "X(50)" NO-UNDO.
73 DEF VAR out-state AS CHAR LABEL "State" FORMAT "X(10)" NO-UNDO.
75 DEFINE STREAM code-list.
76 DEF VAR start-pos AS INTEGER NO-UNDO.
78 /* This mucking around with the seek offset in the stream should mean */
79 /* the search happens a lot quicker. */
80 INPUT STREAM code-list FROM postcode.txt .
81 start-pos = ASC(CAPS(SUBSTRING(locale, 1, 1))) - ASC('A') - 1.
82 IF start-pos < 0 THEN start-pos = 0.
83 SEEK STREAM code-list TO END.
84 start-pos = INTEGER( (SEEK(code-list) * start-pos) / 26 ).
85 SEEK STREAM code-list TO start-pos.
86 /* MESSAGE start-pos VIEW-AS ALERT-BOX INFORMATION. */
88 test-length = LENGTH( locale ).
90 VIEW FRAME x IN WINDOW w1.
92 search-postcodes:
93 DO WHILE TRUE WITH FRAME x:
94 IMPORT STREAM code-list UNFORMATTED postcode-line.
95 test-value = SUBSTRING( postcode-line, 6, test-length).
96 IF test-value = locale THEN DO:
97 postcode = SUBSTRING( postcode-line, 1, 4).
98 out-locale = SUBSTRING( postcode-line, 6, R-INDEX( postcode-line, "(") - 6 ).
99 out-state = SUBSTRING( postcode-line, R-INDEX( postcode-line, "(") + 1 ).
100 out-state = SUBSTRING( out-state, 1, INDEX( out-state, ")") - 1 ).
101 DISPLAY postcode out-locale out-state WITH DOWN FRAME x NO-BOX USE-TEXT.
102 DOWN WITH FRAME x.
103 IF out-locale = locale AND (out-state = in-state OR in-state = "") THEN
104 matching-postcode = postcode.
105 some-found = yes.
106 END.
107 ELSE IF some-found THEN LEAVE.
108 END.
110 INPUT CLOSE.
112 IF matching-postcode <> ? THEN
113 MESSAGE "Recommended postcode is" matching-postcode VIEW-AS ALERT-BOX INFORMATION .
115 DELETE WIDGET w1.
117 /* _UIB-CODE-BLOCK-END */
118 &ANALYZE-RESUME