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