QUICK Screen Occurrence Checking
Carol Kaffenberger
kaffenbe@karmanos.org
Mon, 22 Oct 2001 09:23:22 -0400
It's me again. Still having problems with a screen that
allows duplicate values to be entered. Bob Deskin asked me
to post the file structures and the code here to see if
anyone can find a solution. We are using PH 8.39.C, MPE/ix
6.0. Thanks.
There are 2 files involved. GEOCODE is the primary file.
CITYZIP is the detail file. They are linked by CITY-CD.
GEOCODE TYPE SCALE SCALE
DEC PICTURE
* CITY-NAME CHAR
X(44)
.CITY
CHAR X(12)
.FILLER32
CHAR X(32)
* CITY-CD NUM 0 0
0 ^^^^
* SOUNDEX-KEY CHAR X(4)
COUNTY-CD NUM 0 0 0
^^^
AREA-CODE NUM 0 0 0
^^^
* STATE-CITY-CODE CHAR X(6)
CITYZIP TYPE SCALE SCALE
DEC PICTURE
* CITYZIP CHAR
X(10)
* CITY-CD NUM 0 0 0
^^^^
* ZIP
CHAR X(6)
%PRINT EP8010KS.SOURCE
;--------------------------------------------------------------------
; PROGRAM: EP8010KS - GEOCODE MAINTENANCE
;--------------------------------------------------------------------
; AUTHOR: Inhee Han
; DATE: June, 1995
;--------------------------------------------------------------------
SCREEN EP8010KC.PROD NOACTION NOMODE FIELDMARK &
HELP POPUP FROM 10,45 TO 20,80 &
MESSAGE POPUP WARN, ERROR, &
SEVERE FROM 10,5 TO 15,60
;--------------------------------------------------------------------
; ACTION BAR AND FUNCTION KEYS
;--------------------------------------------------------------------
KEY 4 LEVEL 2 LABEL "Delete City/Zip" ACTION DELETE
KEY 3 LEVEL 1 LABEL "Delete Zip Only" ACTION DELETE MARK
KEY 4 LEVEL 1 LABEL "Add City/Zip" ACTION DESIGNER ADD
KEY 5 LEVEL 1 LABEL "Add Zip Only" ACTION APPEND
KEY 6 LEVEL 1 LABEL "Find " ACTION FIND
KEY 7 LEVEL 1 LABEL "Update" ACTION UPDATE STAY
KEY 2 LEVEL 1 LABEL "Next Page" ACTION NEXT DATA
KEY 5 LEVEL 2 LABEL " " ACTION NULL
USE STDFKEY2.SOURCE
;--------------------------------------------------------------------
; MISCELLANEOUS FIELDS
;--------------------------------------------------------------------
TEMP T-FILE-NAME CHAR*8 INITIAL "EP8010KS"
TEMP T-LINE CHAR*80
TEMP UPDATE-RECORD-FL CHAR*1 INITIAL "Y"
DEFINE T-AUTHOR-COL ZONED*2 = 10
;--------------------------------------------------------------------
; FILES
;--------------------------------------------------------------------
FILE GEOCODE
ACCESS VIAINDEX SOUNDEX-KEY &
USING SOUNDEX(CITY-NAME[1:4]) &
REQUEST CITY-NAME
ACCESS VIAINDEX CITY-CD &
USING CITY-CD &
REQUEST CITY-CD
FILE CITYZIP DETAIL OCCURS 17
ACCESS VIAINDEX CITY-CD USING CITY-CD OF GEOCODE
;FILE CITYZIP REFERENCE ALIAS REF-CITYZIP OCCURS WITH
CITYZIP
FILE TABLE ALIAS USER-TABLE DESIGNER
;--------------------------------------------------------------------
; USE FILES FOR WORKING STORAGE
;--------------------------------------------------------------------
USE TIMENAME.SOURCE
;--------------------------------------------------------------------
; SCREEN LAYOUT SECTION
;--------------------------------------------------------------------
HILITE DATA UNDERLINE
HILITE TITLE INVERSE
TITLE "Geocodes Maintenance" AT ,31
HILITE TITLE OFF
SKIP 1
TITLE "City#" AT ,3
TITLE "State#" AT, 9
TITLE "City Name " AT ,33
TITLE "County" AT ,58
TITLE "Area" AT ,66
TITLE "Zip" AT ,74
ALIGN (1,,4) (,,9)(,,16)(,,59)(,,66)
HILITE DATA INVERSE
SKIP 1
FIELD CITY-CD OF GEOCODE LOOKUP NOTON GEOCODE NOCHANGE
FIELD STATE-CITY-CODE HIDDEN
FIELD CITY-NAME HIDDEN SIZE 40 REQUIRED
FIELD COUNTY-CD HIDDEN
FIELD AREA-CODE HIDDEN
ALIGN (71,,74)
CLUSTER OCCURS WITH CITYZIP
FIELD ZIP OF CITYZIP REQUIRED &
LOOKUP NOTON CITYZIP &
VIAINDEX CITYZIP &
USING (ASCII(CITY-CD OF GEOCODE,4) + ZIP OF CITYZIP)
;FIELD CITYZIP OF CITYZIP &
; LOOKUP NOTON REF-CITYZIP &
; VIAINDEX CITYZIP &
; USING (ASCII(CITY-CD OF GEOCODE,4) + ZIP OF CITYZIP)
SILENT
CLUSTER
;--------------------------------------------------------------------
; PROCEDURES
;--------------------------------------------------------------------
USE STDPROCS.SOURCE NOLIST
USE PDAUTHOR.SOURCE NOLIST
USE UKAUTDEL.SOURCE NOLIST
PROCEDURE POSTFIND
BEGIN
LET UPDATE-RECORD-FL = "N"
END
PROCEDURE DELETE
BEGIN
DO INTERNAL AUTHORIZE-DELETE
DELETE GEOCODE
FOR CITYZIP
BEGIN
DELETE CITYZIP
END
END
PROCEDURE DETAIL DELETE
BEGIN
DO INTERNAL AUTHORIZE-DELETE
DELETE CITYZIP
END
PROCEDURE PREUPDATE
BEGIN
DO INTERNAL AUTHORIZE-UPDATE
IF ALTEREDRECORD OF GEOCODE
THEN
BEGIN
LET UPDATE-RECORD-FL = "Y"
LET SOUNDEX-KEY = SOUNDEX(CITY[1:4])
END
FOR EACH CITYZIP
IF ALTEREDRECORD OF CITYZIP
THEN
BEGIN
LET UPDATE-RECORD-FL = "Y"
LET CITY-CD OF CITYZIP = CITY-CD OF GEOCODE
LET CITYZIP OF CITYZIP = &
ASCII(CITY-CD OF GEOCODE,4) + ZIP OF
CITYZIP
END
END
PROCEDURE EDIT STATE-CITY-CODE OF GEOCODE
BEGIN
IF NOT &
(MATCHPATTERN(STATE-CITY-CODE OF GEOCODE,"######") OR &
STATE-CITY-CODE OF GEOCODE = " ")
THEN
ERROR "State City Code must be numeric or blank"
END
PROCEDURE EDIT ZIP OF CITYZIP
BEGIN
IF NOT &
(MATCHPATTERN(ZIP OF CITYZIP,"##### ") OR &
ZIP OF CITYZIP = " ")
THEN
ERROR "Zip code must be numeric or blank"
END
PROCEDURE DESIGNER ADD
BEGIN
RUN SCREEN EP8011KC.PROD MODE E
END
USE POSTUPDT.SOURCE
BUILD DETAIL LIST
%
--
Carol Kaffenberger
Karmanos Cancer Institute
Detroit, Michigan