SUBROUTINE PALM.UPDATE1(PALM.INFO,FROM.PALM,TO.PALM) EQU AM TO CHAR(254), VM TO CHAR(253), SVM TO CHAR(252) * * Created by Nathan Rector, 01/18/01 * Natec Systems * * PALM.INFO<1> = 0- Request list of items to update Palm with * 1- Review the Palm data against the database * 2- Data deleted from the Palm * 3- All data in the palm database was deleted * * PALM.INFO<2> = Sync Type 0-Fast Sync, 1- Slow Sync, 2-HH to PC, 3- PC to HH * PALM.INFO<3> = UserName syncing * PALM.INFO<4> = Palm Application syncing (ADDRESSBOOK) * PALM.INFO<5> = The last date the palm database was modified * PALM.INFO<6> = The date the palm database was created * PALM.INFO<7> = The last date the palm was synced * * Address Book Phone Labels * Work = 0 * Home = 1 * Fax = 2 * Other = 3 * Email = 4 * Main = 5 * Pager = 6 * Mobole = 7 * ****************************************************************** *** main program ****************************************************************** OPEN "PALM.DATA" TO TEMP.DATA.FILE ELSE STOP 201, "TEMP.DATA" OPEN "CONTACTS" TO CONTACTS.FILE ELSE STOP 201, "CONTACTS" * PROCESSED.LIST = "" SYNC.DATE = PALM.INFO<7> PALM.TO = "" * BEGIN CASE CASE PALM.INFO<1> = 0 AND PALM.INFO<2> = 2 ;* HH to PC * The conduit is transfering all the data from the Palm to * the MV System. * NUM = DCOUNT(FROM.PALM,AM) FOR I = 1 TO NUM PALM.REC.NO = FROM.PALM * PALM.ITEM = "" PALM.ITEM<1> = SYNC.DATE PALM.ITEM<2> = "" PALM.ITEM<3> = FROM.PALM WRITE PALM.ITEM ON TEMP.DATA.FILE, PALM.INFO<3> :".": PALM.INFO<4> :".": PALM.REC.NO NEXT I CASE PALM.INFO<1> = 0 AND PALM.INFO<2> = 3 ;* PC to HH * the Conduit is going to overwrite all the data on the Palm * with data from the MV System * EXECUTE \SELECT PALM.DATA WITH "" = "\: PALM.INFO<3> :".": PALM.INFO<4> :\.]"\ CAPTURING OUTPUT STOP.LOOP = 0 ; TO.PALM = "" LOOP READNEXT ID ELSE STOP.LOOP = 1 UNTIL STOP.LOOP DO GOSUB 1000 REPEAT * EXECUTE \SELECT CONTACTS "1387" "38281" "76504"\ CAPTURING OUTPUT STOP.LOOP = 0 LOOP READNEXT CONTACT.ID ELSE STOP.LOOP = 1 UNTIL STOP.LOOP DO LOCATE CONTACT.ID IN PROCESSED.LIST SETTING JUNK ELSE GOSUB 2000 IF NOT(PALM.DATA = "") THEN TO.PALM<-1> = PALM.DATA END REPEAT CASE PALM.INFO<1> = 0 AND PALM.INFO<2> = 0 ;* Fast Sync * The conduit is looking for a list of records that have not * already been update during the review process. These are * either new records to load into the palm, or records to be * deleted from the palm. Or just updated information to update * the palm with. * EXECUTE \SELECT PALM.DATA WITH MOD.DATE > "\: OCONV(SYNC.DATE,"D4/") :\"\ CAPTURING OUTPUT STOP.LOOP = 0 ; TO.PALM = "" LOOP READNEXT ID ELSE STOP.LOOP = 1 UNTIL STOP.LOOP DO GOSUB 1000 REPEAT * EXECUTE \SELECT CONTACTS "1387"\ CAPTURING OUTPUT SELECT TO CONTACT.SELECT STOP.LOOP = 0 LOOP READNEXT CONTACT.ID FROM CONTACT.SELECT ELSE STOP.LOOP = 1 UNTIL STOP.LOOP DO * creates the palm data from the contact file * LOCATE CONTACT.ID IN PROCESSED.LIST SETTING JUNK ELSE * selects the data from the palm to see if the contact information * is on file. If so, then return the palm record id * EXECUTE \SELECT PALM.DATA WITH CONTACT.ID = "\: CONTACT.ID :\"\ CAPTURING OUTPU IF SYSTEM(11) THEN * get the palm data READNEXT ID ELSE ID = "" PALM.REC.NO = FIELD(ID,".",3) END ELSE PALM.REC.NO = "" END * * gets the information from the contact file * GOSUB 2000 IF NOT(PALM.DATA = "") THEN PALM.DATA<1,1> = PALM.REC.NO TO.PALM<-1> = PALM.DATA END END REPEAT CASE PALM.INFO<1> = 0 AND PALM.INFO<2> = 1 ;* Slow Sync * The conduit is looking for a list of records that have not * already been update during the review process. This process * is different from the Fast Sync in that it is request all the * date that belongs on the Palm, not just the new records or * deleted records. * EXECUTE \SELECT PALM.DATA\ CAPTURING OUTPUT STOP.LOOP = 0 ; TO.PALM = "" LOOP READNEXT ID ELSE STOP.LOOP = 1 UNTIL STOP.LOOP DO GOSUB 1000 REPEAT CASE PALM.INFO<1> = 1 ;* review changes to Palm information * The conduit is asking you to review the changes that have been * done on the palm. The dynamic array you return will be any * changes you want updated on the Palm. * WRITEV SYNC.DATE ON TEMP.DATA.FILE, PALM.INFO<3> :".": PALM.INFO<4> :".": FROM.PALM<1,1>,1 CASE PALM.INFO<1> = 2 ;* Deleted From Palm * The conduit is notifing you that the record has been deleted * from the palm by the user. This allows you to mark, update, or * delete any information in the MV System. Once this process * is done, this record will be deleted from the Palm * EXECUTE \DELETE PALM.DATA "\: PALM.INFO<3> :".": PALM.INFO<4> :".": PALM.FROM<1,1> :\"\ CAPTURING OUTPUT CASE PALM.INFO<1> = 3 ;* clear data from file * The conduit as requested that the data on the MV System be * cleared or deleted. This is usually done with the conduit is * syncing with the palm in "Handheld overwrites PC" mode. * EXECUTE \SELECT PALM.DATA WITH "" = "\: PALM.INFO<3> :\.]"\ CAPTURING OUTPUT IF SYSTEM(11) THEN EXECUTE \DELETE PALM.DATA\ CAPTURING OUTPUT END CASE PALM.INFO<1> = 4 ;* removed deleted records * The Conduit is notifying the MV System that it is ok to * remove the records the database has marked as deleted. * CASE PALM.INFO<1> = 5 ;* Update palm recordId * The Conduit is notoifying the MV System of the new palm record * IDs for the same data in the MV System. * NUM = DCOUNT(FROM.PALM,AM) FOR I = 1 TO NUM PALM.DATA = SYNC.DATE :AM: FROM.PALM WRITE PALM.DATA ON TEMP.DATA.FILE, PALM.INFO<3> :".": PALM.INFO<4> :".": FROM.PALM NEXT I END CASE RETURN ****************************************************************** *** subroutine ****************************************************************** 1000* READ PALM.DATA.ITEM FROM TEMP.DATA.FILE, ID ELSE PALM.DATA.ITEM = "" * IF PALM.DATA.ITEM<3> = "" THEN * create the palm information based on the Contact information CONTACT.ID = PALM.DATA.ITEM<2> ; GOSUB 2000 IF NOT(PALM.DATA = "") THEN PALM.DATA<1,1> = FIELD(ID,".",3) TO.PALM<-1> = PALM.DATA END END ELSE TO.PALM<-1> = PALM.DATA.ITEM<3> END 1900* RETURN 2000* PALM.DATA = "" READ CONTACT.ITEM FROM CONTACTS.FILE, CONTACT.ID ELSE GOTO 2900 * PALM.DATA<1,1> = "" ;* leave blank to create new palm Record PALM.DATA<1,2> = "0" ;* category PALM.DATA<1,3> = "0" ;* Delete PALM.DATA<1,4> = "0" ;* Archive PALM.DATA<1,5> = "1" ;* Dirty - modified PALM.DATA<1,6> = "0" ;* Secret PALM.DATA<1,7> = CONTACT.ITEM<2> ;* first name PALM.DATA<1,8> = CONTACT.ITEM<3> ;* last name PALM.DATA<1,9> = CONTACT.ITEM<1> ;* company name PALM.DATA<1,10> = CONTACT.ITEM<9> ;* Phone 1 PALM.DATA<1,11> = 5 ;* phone 1 Type PALM.DATA<1,12> = CONTACT.ITEM<10> ;* Phone 2 PALM.DATA<1,13> = 2 ;* Phone 2 type PALM.DATA<1,14> = CONTACT.ITEM<24> ;* Phone 3 PALM.DATA<1,15> = 7 ;* Phone 3 type PALM.DATA<1,16> = CONTACT.ITEM<26> ;* phone 4 PALM.DATA<1,17> = 4 ;* Phone 4 Type PALM.DATA<1,18> = CONTACT.ITEM<25> ;* Phone 5 PALM.DATA<1,19> = 6 ;* phone 5 Type PALM.DATA<1,20> = 1 ;* Main Phone # to Display PALM.DATA<1,21> = CONTACT.ITEM<4> ;* address PALM.DATA<1,22> = CONTACT.ITEM<5> ;* City PALM.DATA<1,23> = CONTACT.ITEM<6> ;* state PALM.DATA<1,24> = CONTACT.ITEM<7> ;* Zip PALM.DATA<1,25> = CONTACT.ITEM<8> ;* Country PALM.DATA<1,26> = "" ;* title PALM.DATA<1,27> = CONTACT.ITEM<27> ;* custom1 PALM.DATA<1,28> = "" ;* custom2 PALM.DATA<1,29> = "" ;* custom3 PALM.DATA<1,30> = "Rec#: ": CONTACT.ID ;* custom4 PALM.DATA<1,31> = "" ;* Notes PALM.DATA<1,32> = CONTACT.ID * PROCESSED.LIST<-1> = CONTACT.ID 2900* RETURN END