The Number 1 independent website for ACL information!

TexasACL User Group
About Us
Training
Why ACL
Essays & Scripts
ACL News
Events
Links
FAQ
Site Map
Support Us

MAIN SCRIPT

COM**************************************************
COM Writer Porter Broyles
COM Name: Field Mapping
COM Written July 2008
COM This is a beautiful script that maps fields out and provides a break down on the field map.  This
COM is beneficial as it allows you to determine the normal field formats and the exceptions.  EG
COM it will help you identify fields that should have the field map of XXX99999-99 but don't.
COM
COM While this is a beautiful script, it is provided here for educational purposes only.  It is highly
COM inefficient, and there are much better ways to do this!
COM**************************************************

SET SAFETY OFF
DEL ALL OK
CLOSE
CLOSE SEC

f_time_start = time()


com DEL TEMP1.fil OK
com DEL FORMAT TEMP1 OK
DEL TEMP2.fil OK
DEL FORMAT TEMP2 OK
DEL TEMP_1.fil OK
DEL FORMAT TEMP_1 OK

DIALOG (DIALOG TITLE "User Dialog" WIDTH 478 HEIGHT 312 ) (BUTTONSET TITLE "&OK;&Cancel" AT 384 12 DEFAULT 1 ) (ITEM TITLE "f" TO "v_table" AT 192 108 WIDTH 263 HEIGHT 175 ) (TEXT TITLE "Select table" AT 36 112 )

COM v_table = "AAA_Voucher_Header"

OPEN %v_table%
DEL f_field OK


DIALOG (DIALOG TITLE "User Dialog" WIDTH 528 HEIGHT 326 ) (BUTTONSET TITLE "&OK;&Cancel" AT 420 24 DEFAULT 1 ) (TEXT TITLE "Select Character Field" AT 24 100 ) (ITEM TITLE "C" TO "v_field" AT 180 96 WIDTH 318 HEIGHT 212 )

COM v_field = "vendor"


COUNT

v_cnt = 1
v_cntr = count1

v_record = blank(20)

DO  Z02_field_index WHILE v_cnt <= v_cntr
SET ECHO ON

OPEN TEMP1

SUMMARIZE ON f_test to TEMP2 PRESORT OPEN

SORT ON COUNT D to TEMP3 OPEN

TOTAL FIELDS COUNT

LOCATE RECORD 1
v_1 = count
v_map1 = f_test
LOCATE RECORD 2
v_2 = count
v_map2 = f_test
Locate RECORD 3
v_3 = count
v_map3 = F_test
Locate RECORD 4
v_4 = count
v_map4 = f_test

V_criteria = "1=1"
IF (v_1+v_2+v_3+v_4) > (.95*total1) ASSIGN V_criteria = "NOT MAP(%v_field%, ALL('%v_map1%')) AND NOT MATCH(%v_field%, ALL('%v_map2%')) AND NOT MATCH(%v_field%, ALL('%v_map3%')) AND NOT MATCH(%v_field%, ALL('%v_map4%'))"
IF (v_1+v_2+v_3) > (.95*total1) ASSIGN V_criteria = "NOT MAP(%v_field%, ALL('%v_map1%')) AND NOT MATCH(%v_field%, ALL('%v_map2%')) AND NOT MATCH(%v_field%, ALL('%v_map3%'))"
IF (v_1+v_2) > ( .95*total1) ASSIGN V_criteria = "NOT MAP(%v_field%, ALL('%v_map1%')) AND NOT MATCH(%v_field%, ALL('%v_map2%'))"
IF (v_1) > (.90*total1) ASSIGN V_criteria = "NOT MAP(%v_field%, ALL('%v_map1%'))"

OPEN temp1
EXTRACT FIELDS ALL IF %v_criteria% TO TEMP5

v_time_stop = time()


Z02 Field Index

ZOPEN %v_table%

LOCATE RECORD v_cnt

v_cnt1 = 1
v_cntr1 = len(ALL(%v_field%))

SET FILTER recno() =v_cnt

DO z03_index_pt_2 WHILE v_cnt1 <= v_cntr1


EXTRACT FIELD ALL sub(v_record,1,20) as "f_test" TO TEMP1 APPEND

OPEN %v_table%

DELete f_field OK
DELETE v_record OK

v_record = BLANK(20)

v_cnt = v_cnt +1


Z03 Index pt 2

IF v_cnt1 <> 1 SET ECHO OFF

IF LEN(INCLUDE(sub(%v_field%,v_cnt1,1)," ")) = 1 ASSIGN v_record =  ALL(v_record) + " "
 IF LEN(INCLUDE(sub(%v_field%,v_cnt1,1),"1234567890")) = 1 ASSIGN v_record =   ALL(v_record) + "9"
 IF LEN(INCLUDE(sub(UPPER(%v_field%),v_cnt1,1),"ABCDEFGHIJKLMNOPQRSTUVWXYZ")) = 1 ASSIGN v_record =   ALL(v_record) + "X"
IF LEN(EXCLUDE(sub(UPPER(%v_field%),v_cnt1,1),"ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890")) = 1 ASSIGN v_record =   all(v_record) + "!"

v_cnt1 = v_cnt1 +1