/* * Concordance Programming Language List Tagging Example * * Copyright (c) 1994 Dataflight Software. * All Rights Reserved. * 2337 Roscomare Road, Suite 11 * Los Angeles, CA 90077 * * ALL RIGHTS RESERVED. * * Unauthorized distribution, adaptation or use may be * subject to civil and criminal penalties. * */ int isWindows = 0; int DOCBIT = 65536; main() { int db, i, fh, fo, bytes, line; char string[256], szField[80]; if ((fh = open(string = "F:\data\data.txt", "r")) < 0) return(Message("Can't open "+string, TRUE)); if ((fo = open("F:\data\data.out", "w+")) < 0) return(Message("Can't open "+string, TRUE)); while((i = readln(fh, string)) >= 0) { line = line + 1; bytes = bytes + i; if ((line mod 5) == 0) { puts(10,40, "Line: "+str(line, 10, 0, ',')); puts(11,40, "Bytes: "+str(bytes, 10, 0, ',')); } if (isalpha(string[0])) { switch(string) { case "BEGINNING ATTACHMENT NUMBER": string = "BDOC"; break; case "DOCUMENT DATE": string = "DATE"; break; case "BEGINNING DUPLICATE NUMBER": string = "BDUP"; break; case "ORIGIN": string = "ORIG"; break; case "ORIGIN STATE": string = "ORST"; break; case "CHARACTERISTICS": string = "CHAR"; break; case "RE/DOCUMENT TITLE": string = "RE"; break; case "VEHICLE MODEL YEAR": string = "VMY"; break; case "VEHICLE STATE": string = "ST"; break; case "VEHICLE NAME": string = "VEH"; break; case "VEHICLE NUMBER": string = "VEHN"; break; case "VEHICLE MODEL YEAR 1998.5": string = "VMY5"; break; case "ADDRESSEE": string = "TO"; break; case "TO CODE": string = "TOC"; break; case "ADDRESSOR": string = "FROM"; break; case "FROM CODE": string = "FROC"; break; case "COPYEES": string = "COPY"; break; case "COPYEES CODES": string = "COPC"; break; case "NAMES MENTIONED": string = "MENT"; break; case "NAMES MENTIONED CODE": string = "MENC"; break; case "BRIEF DOCUMENT DESCRIPTION": string = "DESC"; break; case "NON-RELEVANT CATEGORY": string = "CAT"; break; case "DOCUMENT STATUS": string = "STAT"; break; case "BOX NUMBER": string = "BOX"; break; case "SUBJECTS": string = "SUB"; break; case "BEGINNING SUZ NUMBER": string = "BSUZ"; break; case "CODER'S NAME": string = "CODE"; break; case "CODE DATE": string = "CDAT"; break; case "QUALITY CHECKER'S NAME": string = "QCER"; break; case "QUALITY CHECK DATE": string = "QCDT"; break; case "BATES NUMBER": string = "BATE"; break; case "DATE LOADED": string = "LOAD"; break; case "DATE RECORD LAST MODIFIED": string = "MOD"; break; case "ATTORNEY DOCUMENT DESCRIPTION": string = "ADES"; break; case "COMMENTS": string = "COMM"; break; case "REFERENCED DOCUMENT DESCRIP.": string = "REF"; break; case "MISSING ATTACH. DESCRIP.": string = "MATT"; break; case "PRODUCTION HISTORY DOCUMENT": string = "PHIS"; break; case "MASTER PRODUCTION SET": string = "MST"; break; case "REQUEST NUMBER": string = "REQ"; break; case "SET #": string = "SET"; break; case "EXHIBIT #": string = "EXNO"; break; case "DEPONENT INFO": string = "DEPO"; break; case "MISC FIELD": string = "XTRA"; break; case "SPONSORING WITNESS": string = "WIT"; break; case "MISCELLANEOUS": string = "MISC"; break; default: i = match(string, " ", 1); szField = substr(string, 1, i - 1); switch(szField) { case "": case "": case "": case "ADES": case "BATE": case "BATT": case "BDOC": case "BDUP": case "BOX": case "BSUZ": case "CAT": case "CDAT": case "CHAR": case "CODE": case "COMM": case "COPC": case "COPY": case "DATE": case "DESC": case "DEPO": case "DOCN": case "EXNO": case "FROC": case "FROM": case "LOAD": case "MATT": case "MENC": case "MENT": case "MISC": case "MOD": case "MST": case "ORIG": case "ORST": case "PHIS": case "QCDT": case "QCER": case "RE": case "REF": case "REQ": case "SET": case "ST": case "STAT": case "SUB": case "TO": case "TOC": case "TYPE": case "VEH": case "VEHN": case "VMY": case "VMY5": case "WIT": case "XTRA": break; default: Message("Unknown entry: "+string, TRUE); /* return; */ break; } } } writeln(fo, string, len(string)); if (keypress()) { if (getkey() == ESC) { if (Message("Cancel processing? Y/N", TRUE) == 'Y') break; } } } close(fh); close(fo); return; } RGB(char red, grn, blu) { return(((blu & 255) * 65536) | ((grn & 255) * 256) | (red & 255)); } /**************************************************************** * Name: Message * * Synopsis: Displays error message and waits for key. * ****************************************************************/ int fg, bk, tr, tc; Message(text message; int wait) { text screen; int key; tr = 8; tc = 13; bk = RGB(255,0,255); fg = isWindows ? RGB(160,0,160) : MenuColor_; cursoroff(); if (wait) screen = save(tr, tc, tr + 3, tc + 56); box(tr, tc, tr + 2, tc + 54,"3U", fg, bk); puts(tr + 1,tc + 1,pad(message,'C',53), isWindows ? RGB(255,255,255) : fg,bk); if (wait) { while(keypress()) getkey(); key = getkey(); restore(tr,tc,screen); } return(asc(upper(chr(key)))); } /* Message() */ /**************************************************************** * Global Variable Declarations and Initialization * ****************************************************************/ /* findfirst() file attributes. _A_NORMAL 00 Normal file - No read/write restrictions _A_RDONLY 01 Read only file _A_HIDDEN 02 Hidden file _A_SYSTEM 04 System file _A_VOLID 08 Volume ID file _A_SUBDIR 16 Subdirectory _A_ARCH 32 Archive file edit() mode attributes. A // Alpha only mode. U // Upper case conversion. N // Numeric only mode. Y // Y mode for dates. M // M mode for dates. D // D mode for dates. C // Cut and paste mode. S // Scroll field left and right, no wordwrapping. E // Return on [Enter], no CR in data. T // Always edit from the top. B // Always edit from the bottom. @ // Display only this field. ! // Return when this field is entered, don't edit. N:99.99 */ int CTRLPGUP = 33792, F11 = 34048, F12 = 34304, EOF = -1; short LEFT = 19200, RIGHT = 19712, UP = 18432, DOWN = 20480, HOME = 18176, END = 20224, PGUP = 18688, PGDN = 20736, CTRLPGDN = 30208, F1 = 15104, F2 = 15360, F3 = 15616, F4 = 15872, F5 = 16128, F6 = 16384, F7 = 16640, F8 = 16896, F9 = 17152, F10 = 17408; char ESC = 27, CTRLP = 16, FALSE = 0, TRUE = 1, CR = 13, LF = 10; EditCustomer(int db) { char areacode[4]; char prefix[4]; char phone[5]; char string[80]; int key; int field; char notFinished; char customerFormat[5]; text screen = save(0,0,MaxRow_,79); areacode = trim(substr(db->PHONE,1,3)); prefix = trim(substr(db->PHONE,5,3)); phone = trim(substr(db->PHONE,9,4)); notFinished = TRUE; box( 2, 1, 16, 79,'DD',MenuColor_); scroll(3, 2, 14, 76, 0, 0,MenuColor_); if (recno(db) > 0) customerFormat = "@"; else customerFormat = "SEU"; while(notFinished) { key = edit( "Customer", 3, 3, 3, 11, "@", db->CUSTOMER, 3, 12, 3, 40, customerFormat, /* */ "Company", 4, 3, 4, 10, "@", db->COMPANY, 4, 12, 4, 40, "SE", /* */ "Contact", 5, 3, 5, 10, "@", db->CONTACT, 5, 12, 5, 40, "SE", /* */ "Phone", 6, 3, 6, 10, "@", areacode, 6, 12, 6, 14, "SEN", /* */ "/", 6, 15, 6, 15, "@", prefix, 6, 16, 6, 18, "SEN", /* */ "-", 6, 19, 6, 19, "@", phone, 6, 20, 6, 24, "SEN", /* */ "Address", 3, 42, 3, 49, "@", db->ADDRESS1, 4, 43, 4, 67, "SE", /* */ db->ADDRESS2, 5, 43, 5, 67, "SE", /* */ db->CITY, 6, 43, 6, 56, "SE", /* */ ",", 6, 57, 6, 57, "@", db->STATE, 6, 59, 6, 60, "SEU", /* */ db->ZIPCODE, 6, 62, 6, 71, "SEN", /* */ "Terms", 8, 3, 8, 14, "@", db->TERMS, 8, 15, 8, 24, "SEN", /* */ "Limit", 9, 3, 9, 14, "@", db->LIMIT, 9, 15, 9, 24, ",SE", /* */ "Discount", 10, 3, 10, 14, "@", db->DISCOUNT, 10, 15, 10, 24, "N:7.2", /* */ "Tax rate", 11, 3, 11, 14, "@", db->TAXRATE, 11, 15, 11, 24, "N:7.2", /* */ "Tax status", 12, 3, 12, 12, "@", db->TAXSTATUS, 12, 15, 12, 15, "U", /* */ "YTD sales", 8, 43, 8, 54, "@", db->YTDSALES, 8, 56, 8, 66, ",SE", /* */ "Balance", 9, 43, 9, 54, "@", db->BALANCE, 9, 56, 9, 66, ",N:10.2", /* */ "Credit", 10, 43, 10, 54, "@", db->CREDIT, 10, 56, 10, 66, ",N:10.2", /* */ "Last purchase", 11, 43, 11, 54, "@", db->LASTSALE, 11, 56, 11, 66, "M", /* */ "Salesman", 12, 43, 12, 54, "@", db->SALESMAN, 12, 56, 12, 66, "SEU", /* */ field, "", 0, 0, MenuColor_); switch(key) { case PGDN: case RIGHT: case CR: case DOWN: field = 1; break; case PGUP: case LEFT: case UP: field = 99; break; case F5: if (deleted(db)) { recall(db); Message("Customer recalled from deletion."); } else { if (db->BALANCE <> 0.0) Message("Customer's balance isn't zero, can't delete."); else { delete(db); Message("Customer marked for deletion."); } } break; case ESC: reset(db); notFinished = FALSE; break; case F10: if (deleted(db)) if (Message("Pack database now? Y/N") == 'Y') pack(db); notFinished = FALSE; break; default: if (Message("Key is "+str(key)+" Field is "+str(field)) == 'Y') notFinished = FALSE; break; } } db->PHONE = pad(areacode,'L',3)+"/"+pad(prefix,'L',3)+"-"+pad(phone,'L',4); restore(0,0,screen); return(key); } /* EditCustomer() */