ࡱ> Root Entrys '+/?-`Contents. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghRoot Entrys '+/?-PfzContents4 hdArialocumt"Version8-Title8-gName8-&[Date] &[Time]8-File: &[File]8-Page &[Page] of &[Pages]8-;ULedger Engine,)kW projects465.db,)O students,)  id (key)q,) first_name," last_name,"ssn8,"q1 - q3j,"p1 - p3j,"independent_effort ,"notesT,"XX- enterprise,)XX id (key)q,)student (fkey, students id),"nameQ,"emailK,"Mmcatalogm,)iM#'enterpriseid (key, fkey enterprise id)#,) gsid (key),"descrX,"priceK," lastupdate," lastuptime,"+,,ledger_details,)+,, ldetid (key),)text8,"5XX^ledger^,)Z5XX"enterprise (key, fkey enterprise),)'ldet (key, fkey ledger_details ldetid),"debits[,"creditsg,"k[tKprojects465.pbl,)OO^ projects465,)Application Object,"OOQOpenQ,"UDBMS & DBParm from PB.INI,"Open w_buttons,"g DataWindows,"dw_by_last_name,"EE Tab Style,"8EXX students:,"id," last_name," first_name,"E#order by last_name#,"dw_enterprise," ?"Grid for entering enterprise data," unn enterprise:,"id,"studentq,"nameQ,"emailK,"I1dw_enterprise_list,"pH%Tabular for printing enterprise list,"Hnn enterprise:,"id,"student: first_name, last_name,"nameQ,"emailK,"?dw_enterprise_maint?,"pn Grid for maintaining enterprise,"nnn enterprise:,"id,"studentq,"nameQ,"emailK,"n+order by name," dw_grades,"kGrid for entering gradesk,"  students:,"id," last_name,"p1 - p5j,"q1 - q3j,"independent_effort ,"notesT,"dw_gradesheet," uGrid for printing paper copy," iq students:," last_name," first_name,"q1 - q3j,"p1 - p5j,"independent_effort ,"*sum(q1 - q3, p1 - p5, independent_effort)q,"notesT,")sdw_student_lookup),"X1Grid for dropdown,"XBB students:," last_name,"id,"X#order by last_name#,"W|Windows,":33J@ w_buttons,"ee cb_grades," WNCaption 'Enter Grades'N,"e,,E'ClickE,"%,,open w_grades,","OO]}cb_gradesheet,"BCaption 'Print Grades'B,"K}click K,"l2open w_gradesheet2,"P9Mcb_grades2text click9," gCaption 'Grades to Text'g,"BiclickB,",,Delcare variables,","9Connect to database9,"Declare Grades as CURSOR,"[Open Grades CURSOR[," Setup page header ,",,KFormat the record intoK,"fixed width columns/,"wOpen & write out text filew,"ee9C cb_roster,"x5Caption 'Print Roster'5,"xo,,B-clickB,"o,,open w_roster,","leeHcb_maintain_studentsH,"-Caption 'Maintain Students',"-3,,BclickB,"3,,Xopen w_by_last_nameX,","0eecb_enterprises,"wCaption 'Enterprise Maint'w,",,BOclickB,"c,,2open w_enterprises2,","ee cb_enterprise_list ,"C^Caption 'Enterprise List'^,",,ByclickB,",,[open w_enterprise_list[,","OO?Iicb_getpsX12inbound?,"$&Caption 'Get psX12'&,"$BiclickB,"open w_getpsX12,"ee9Ccb_trial_balance,"HCaption 'Trial Balance'H,"o,,B-clickB,"nvo,,Eopen w_trail_balanceE,","lee cb_an_enterprise ,"Caption 'Report An Enterprise',"3,,BclickB,"p3,,Xopen w_an_enterpriseX,","  ڋriw_enterprise_list,"0eeK۵openK,"zconnectz,",,)$dwc_enterprise_list. SetTransObject),"dwc_enterprise_list.Retrieve(),"C,dwc_enterprise_list,,"uCData Object dw_enterprise_list,"lOOz@ cb_printz,"lOOgclickedg,",PrintedOK = dwc_enterprise_list.Print(TRUE),"3uPrinterOK = -1,"p3messagebox "printer error","i cb_close,"giclickedg," close parent,"9w_trial_balance,"`needs definition,"Y-w_an_enterprise,"Yneeds definition," w_getpsx12,"=NNh w_grades,"&eeK֫openK,")u}Connect},"),,dwc_grades.SetTransObject,"dwc_grades.RetrieveH,"9{  dwc_grades,"9^DataObject dw_grades^," scb_save,"agvclickedg," RetCode = dwc.grades.Update()," )k RetCode = 1,"0)zCOMMITz," MOO?Else?,"h<&Message "Update Failed " + Error Text<," ROLLBACK,"  close parent,"G cb_close,"hgGclickedg,"' close parent,"g;w_by_last_name,"gneeds definition,"Tϋг w_gradesheet,"zeeK openK,"k}Connect},"kA,,dwc_gradesheet.SetTransObject,"dwc_gradesheet.Retrieve,"adwc_gradesheet,"#DataObject dw_gradesheet,"OOz1Q cb_printz,"t'PrintedOK = dwc_gradesheet.Print(TRUE)t,"}QPrinterOK = -1,"p}messagebox "printer error","!γ cb_close,"g!γclickedg,"i close parent,"ˋ4+ w_roster,"weeKwopenK,"A}Connect},",,dwc_roster.SetTransObject,"dwc_roster.Retrieve9,"wG dwc_roster,"NDataObject dw_rosterN,"w.OOz cb_printz,"Ig##PrintedOK = dwc_roster.Print(TRUE)#,"I7PrinterOK = -1,"pvmessagebox "printer error","wW+ cb_close,"YWg+clickedg,"W close parent,"BB5 Projectsz," Executable,"BBNp_projects465,"Generated ApplicationN,"projects465.exe,"kXX!inbound_psX12,)XXR.txt files holding JVs/,)9filename is date & time of batch + 009 sequence in batchR,"1st line is email subject line,"#remaining lines are email notetext," 8hdArial dArial0dArial ocumt"0INFO465w&0Ledger Engine&g0Incomplete Draft&0 &0 & Page &[Page] of &[Pages],"/1?1? Ledger Engine&)-S~~n projects465.db&)29q studentsq&)9 id (key)d&) first_name&) last_name&) ssn/&) q1 - q3[&) p1 - p3[&) independent_effort&) notesH&)2LLh enterprise&)LL^ id (key)d&) student (fkey, students id)^&) nameH&) emailE&)2rr^u^ catalog^&)rr 'enterpriseid (key, fkey enterprise id)&) gsid (key)&) descrH&) price?&) lastupdate&) lastuptime&)2&&6 ledger_details&)*&& ldetid (key)&) text2&)2!LLN ledgerN&)!LL "enterprise (key, fkey enterprise)&) 'ldet (key, fkey ledger_details ldetid)&) debitsN&) creditsX&)-n < <e projects465.pbl&)88BBo projects465&) Application Object&)h8BBE OpenE&)g DBMS & DBParm from PB.INI&)  Open w_buttons&)8& DataWindows&)06 dw_by_last_name&)`} Tab Style}&)8`LL students:z&) id&) last_name&) first_name&)`Z order by last_name&)0^ dw_enterprise&)( "Grid for entering enterprise data&)(/__ enterprise:&) id&) studenta&) nameH&) emailE&)I0H dw_enterprise_list&)p]b %Tabular for printing enterprise list&)]__ enterprise:&) id&) student: first_name, last_name&) nameH&) emailE&)0A  s dw_enterprise_maint &)p Grid for maintaining enterprise&)A__ enterprise:&) id&) studenta&) nameH&) emailE&) order by name&)0uK dw_grades&)5 Grid for entering grades5&)F students:z&) id&) last_name&) p1 - p5[&) q1 - q3[&) independent_effort&) notesH&)0 dw_gradesheet&)8Sg Grid for printing paper copyg&)8p students:z&) last_name&) first_name&) q1 - q3[&) p1 - p5[&) independent_effort&) *sum(q1 - q3, p1 - p5, independent_effort)&) notesH&)0> dw_student_lookup&)mj Grid for dropdown&)m99 students:z&) last_name&) id&)mb order by last_name&)8b5b5t7U Windowst&)@ w_buttons&)UUL cb_grades&) & Caption 'Enter Grades'&&)ep&&B9 ClickB&)p&& open w_grades&) &)BBZ cb_gradesheet&) Caption 'Print Grades'&)~EZ click E&)K~ open w_gradesheet&) 2; cb_grades2text click &)< Caption 'Grades to Text'<&)_SS; click;&)&& Delcare variables&) &) Connect to database&)} Declare Grades as CURSOR}&)_5 Open Grades CURSOR5&) Setup page header&)&&# Format the record into#&) fixed width columns&)E Open & write out text fileE&)\UUz  cb_rosterz&){ Caption 'Print Roster'&){-&&;u click;&)-&& open w_roster&) &)WUU cb_maintain_students&)a Caption 'Maintain Students'a&)(&&;p click;&)(&&# open w_by_last_name#&) &)RUU cb_enterprises&)K Caption 'Enterprise Maint'K&)#&&;k click;&)A#&& open w_enterprises&) &)MUU cb_enterprise_list&)5 Caption 'Enterprise List'5&)&&;f click;&)f&&  open w_enterprise_list &) &)[BB  cb_getpsX12inbound &)  Caption 'Get psX12'&) ,;a click;&), open w_getpsX12&)iUU cb_trial_balance&)  Caption 'Trial Balance' &):&&; click;&)nS:&&  open w_trail_balance &) &)dUU cb_an_enterprise&) Caption 'Report An Enterprise'&)5&&;} click;&)p`5&& open w_an_enterprise&) &) pEE w_enterprise_list&)`UU? open?&)g connectg&)1&& $dwc_enterprise_list. SetTransObject&) dwc_enterprise_list.Retrieve()&)y dwc_enterprise_list&)M Data Object dw_enterprise_list&)BBg" cb_printg&)BB[Q clicked[&)^B ,PrintedOK = dwc_enterprise_list.Print(TRUE)B&)^ߚ PrinterOK = -1&)p\X messagebox "printer error"X&)=tr cb_closet&)=[r clicked[&)k= close parent&)ޙ w_trial_balance&)` needs definition&)<q w_an_enterprise&) < needs definition&)((c w_getpsx12&).ݠ?} open?&)V *display "Checking for 1st email batch..."&)V]  TriggerEvent(Timer!) &)V 6display "Waiting for 2nd check after " + current time&)V timer(180)&)lۅdU Declared&){ۅ >integer: Attempts, F, P, L, FieldCount, EditErrors, psX12File&) Ustring Fields[100], CleanFields[100], psX12Line, AChar, Delimiter = "*", EditMessageI&) "string CrLf = char(13) + char(10)&) [string SubjectLine, NoteText, psX12FileName, psX12FileNames[100], CleanpsX12FileNames[100]&) [string EmailEnterpriseId, EnterpriseId, EnterpriseName, EmailDate, EmailTime, EmailAddress&) Along InBoxCount, InBoxLoc, psX12Loc[1000], psX12Count, RecLength&) &)% Functions&) ParseLine&)q] Fields <-- CleanFields&)]]X F <-- 1X&)]X P <-- 1X&)] L <-- len(ALine)&)]cx^ Parse ALine&)?C For P = 1 to L&)e?E AChar <-- mid(ALine,P,1)E&)?c AChar = Delimiter&)l increment F&)?8ؼ Else8&)0) Cat AChar to Fields[F])&)?? Next?&)]%g return Fg&)hOO9 HandleCat&)g &Argument passed is integer FileHandle&)grr){d Declare local variables)&)rrH string Descr, Price, AStringd&) date Dated&) time Timed&) -integer GSId, LineCounter, IdHash, PriceEditH&) boolean Deleted&) &)gGG{ 6Finish edit on 1st line, stop if there are any errors&)47UU?<_ Fields[2] <> EnterpriseId?&)d  Incr EditErrors&) &&' WCat !!! Enterprise id on first line is not the same as in subject line of eamil + CrLf'&) to EditMessage&)7UU7Z len(Fields[3]) <> 14&)w  Incr EditErrors&)w && 7Cat !!! DateTime must be 14 characters long !!! + CrLf&) to EditMessage&)72 EditErrors <> 0&)?  return FALSE&)7 Incr LineCounter&) gmBS  -Check next line has 4 fields and 1st is ITEMB&)? -RecLength <-- fileread(filehandle,psX12Line)?&)5OфѺ RecLength <= 0&) &&  :Cat !!! Zero length record or EOF encountered before ECAT &) to EditMessage&) < Incr EditErrors&)9  return FALSE&) Cat psX12Line to EditMessage&)&& $FieldCount <-- ParseLine(psX12Line)&) &)-τϘ Fields[1] <> "ITEM"&), S Incr EditErrors&), -&&I ?Cat !!! + Fields[1] + was found where ITEM was expected + CrLfI&) to EditMessage&),,  return FALSE&)rg88p̽ Process ITEM lines&);& Do&&)l̈́ FieldCount < 3 OR&)  FieldCount > 4 &)p Incr EditErrors&)l&& FCat !!! + FieldCount + Fields found where 3 or 4 were expected + CrLf&) to EditMessage&) return FALSE&)`R GSId <-- integer(Fields[2])R&)UUtt̗ GSId = 0t&)a? Incr EditErrors&)a&& JCat !!! + Fields[2] + was found where an integer GSId was expected + CrLf&) to EditMessage&):8o Else8&)%:2 Accum GSId in IDHash2&)BB7 Fields[3] = ""&) Incr EditErrors&)[ 5Cat !!! Nothing found where Description was expected&)mȀ8 Else8&)%?? ʟ Fields[3] = "DELETE &)suLL SELECT "descr"&) INTO :AString&) FROM "catalog"&) 9WHERE "enterpriseid" = :EnterpriseId AND "gsid" = :GSId;&)uUU?b SQLCA.SQLCode = 0&) && DELETE FROM "catalog"E&) 6WHERE "enterpriseid" = :Enterprise AND "gsid" = :GSId&)  Deleted <-- TRUE&)uUU8:] Else8&) Incr EditErrors&)&&' QCat !!! Requested DELETE of item + string(GSId) + which is not in catalog + CrLf'&) to EditMessage&)%86 Else8&)P Descr <-- Fields[3]&)EƏ NOT Deleted&) !PriceEdit <-- integer(Fields[4])&)UUVy PriceEdit = 0&)! Incr EditErrors&)t&&@ XCat !!! Price of zero, no price, or alphabetic characters found in the 4th field + CrLf@&) to EditMessage&)8Q Else8&)  Price <-- Fields[4]&) EditErrors = 0&)&&9 ///See if this item is already in the catalog &9&) "Update it if it is, Insert if notw&)LL SELECT "descr"&) INTO :AString&) FROM "catalog"&) 9WHERE "enterpriseid" = :EnterpriseId AND "gsid" = :GSId;&) LL|ñ SQLCA.SQLCode = 0&)t LL UPDATE "catalog"&) ?SET "descr" = :Descr, "price" = :Price, "lastupdate" = :Dated,&)  "lastuptime" = :TimedU&) 9WHERE "enterpriseid" = :EnterpriseId AND "gsid" = :GSId;&).998 Else8&)P .99  INSERT "catalog"&) V ("descr" = :Descr, "price" = :Price, "lastupdate" = :Dated, "lastuptime" = :Timed) &) ?VALUES (:EnterpriseId, :GSId, :Descr, :Price, :Dated, :Timed);6&)t)qq SQLCode <> 0&)  Incr EditErrors&) ) 6Cat !!! Updating database got SQL Error + SQLErrText &)  GOTO Done&)ٿ& Read the next record, &&) handle zero length&)RJUz .RecLength <-- fileread(FileHandle, psX12Line)U&)UU!D RecLength = 0&) ٿ&& 3Cat !!! Zero length or EOF encountered before ECAT&) to EditMessage &) h GOTO Done&)  $Cat psX12Line + CrLf to EditMessage&) $FieldCount <-- ParseLine(psX12Line)&)N Incr LineCounter&) Loop UNTIL Fields[1] <> "ITEM"&)gм4  Line after ITEMs must be ECAT&)Mj Fields[1] <> "ECAT"&)p Incr EditErrors&)&&R ?Cat !!! + Fields[1] + was found where ECAT was expected + CrLfR&) to EditMessage&)e GOTO Done&)M0 Incr LineCounter&)5gD Check LineCounter & IDHash&)1mUU "integer(Fields[2]) <> LineCounter&)  Incr EditErrors&) >&&6 hCat !!! A line count of + Fields[2] + was found where + string[LineCounter] + lines were counted + CrLf6&) to EditMessage&)1hUUkߺ integer(Fields[3]) <> IdHashk&) Incr EditErrors&)9&& [Cat !!! A GSId Hash of + Fields3] + was found where + string[IdHash] + was expected + CrLf&) to EditMessage&)gɹN Done:N&)g 0&)&& 5Cat There are no catalog entries at this time + CrLf&) to EditMessage&)= return TRUE&)77P !Put the catalog into EditMessage&) ) do While SQLCode = 0)&)G ^B CatGSId <-- string(GSId)B&)  8CatDateTime <-- string(LastUpDate) + string(LastUpTime)&) &&' eCat CatEntperpriseId + "*" + CatGSId + "*" + CatDescr + "*" + CatPrice + "*" + CatDateTime + CrLf '&) to EditMessage &) 99 FETCH CatEntries INTO K&) L :CatEnterpriseId, :GSId, :CatDescr, :CatPrice, :LastUpDate, :LastUpTime;&) &) t? Loop?&) CLOSE CatEntries&) return TRUE&)8}m HandleJV}&)Z8 needs definition&)6H* TimerH&)_ (Housekeeping at start of new mail check&)Wrrԭ (Declare and initialize local variables &) and Objects&) Wrr2 boolean TransactionOK,&) mailSession MS&) mailMessage Msg&) mailRecipient Recipient2&) &) &)p߬d# Setup for a new mail checkd&)e߬#  Attempts += 1&) &) EditErrors = 0&) psX12Count = 0&) EditMessage = ""&) %psX12FileNames = CleanpsX12FileNames#&) InBoxCount = 0&) InBoxLoc = 0&) &)t MS <-- CREATE MailSessiont&)-qqNǪ Logon to MS&)  or display error messageN&)O 2st_helper.Text <-- Logging on to mail session now&)OBBb MS.mailLogon(MailDownload!) <>&) mailReturnSuccess!&)> - Hlb_psX12inbound.AddItem("There was an error retrieving email at Now()")&)> Ϫ GOTO MSLogoff&)2n Download mail to MS or2&) display error message#&)e3N< -st_helper.Text <-- Checking for email now...<&)3qqR% )MS.mailGetMessages <> mailReturnSuccess!R&)n  :lb_psX12inbound.AddItem("There was an error at Now()...")&)  =st_helper.Text <-- Attempt + string(Attempts) + got an error&) 4 GOTO MSLogoff&)_BB1 InBoxCount = 0&)p $st_helper.Text <-- No emails at all&)pU GOTO MSLogoff&)_\\k 8 Check the InBox for psX12 k&) formatted SubjectLines/&)rԧ 4st_helper.Text <-- Checking Inbox for psX12s now...&)1\-- Check each item in the InBox&)v For InBoxLoc = 1 to InBoxCount&)r mailReadMessage at InBoxLoc&)^ SubjectLine <-- MS.Subject^&)qqN| left(SubjectLine,4) = "*!*!"N&) n \ Incr psX12Count&)en  "psX12Loc[PsX12Count] <-- InBoxLoc&)n  2lb_psX12inbound.AddItem( InBoxCount + SubjectLine&)B? Next?&)`_BB? psX12Count = 0&)s Hst_helper.Text <-- No psX12x at attempt + string(Attempts) + waiting...&)sc GOTO MSLogoff&)I_ Ost_helper.Text <-- There are + string(psX12Count) + transactions in this batch&)@_ Glb_psx12inbound.AddItem(string(psX12count) + psX12s received at Now() &)_I) )CONNECT to the database & error if can't)&)_ՠ)) ' Write psX12s to a file&) !For InBoxCount = 1 to psX12Count&)k <MS.mailReadMessage at psX12Loc[InBoxCount] leave read FALSEk&) /k SubjectLine <-- Msg.Subjectk&)ѡa NoteText <-- Msg.NoteTexta&)js 0psX12FileName <-- Path + Date Time Stamp + .txt&)I QpsX12File <-- FileOpen(psX12FileName, StreamMode!, Write!, LockWrite!, Replace!)I&)iBB5 psX12File = -1&) 9 )AddItem error message to lb_psX12Inbound9&)Y "psX12FileNames[InBoxCount] <-- ""&)K8  Else8&)<؟ 4FileWrite(psX12File, SubjectLine + CrLf + NoteText)&)=<z  FileClose(psX12File) &)s< -psX12FileNames[InBoxCount] <-- psX12FileName&)< <MS.mailReadMessage pa psX12Loc[InBoxCount] making Read TRUE&)_llsh 7Open Each file, edit it, and handle valid transactions&)Q> !For InBoxCount = 1 to psX12Count&)QǏ !psX12FileNames[psX12Count] <> ""&)f  -psX12FileName <-- psX12FileNames[InBoxCount]&)ef  &psX12File <-- FileOpen(psX12FileName)&) f BBY psX12File = -1&)d $ MessageBox "File Open Error"&)d ƜH HALTH&)f h} fileread(psX12File,psX12Line)}&)ef   )EMailEnterpriseId <-- mid(psX12Line,5,4) &)f sLL SELECT "id", "name", "email" &) 3INTO :EnterpriseId, "EnterpriseName, :EmailAddress&) FROM "enterprise" &) !WHERE "id" = :EmailEnterpriseId;&)f ܚ SQLCode <> 0&)k ܚ 2Add invalid enterprise message to lb_psX12Inbound&)f RBڔ Check for email addressB&) on file and continue&) to handle transaction&) H&&< isnull(EmailAddress) OR<&)  EmailAddress = ""&)p [ /AddItem "No email address " to lb_psX12InBound&) 8 Else8&)l   ;AddItem "Email back to " + EmailAddress to lb_psX12Inbound &)l VR +Get EmailDate & EmailTime from SubjectLineR&)@l  EditErrors <-- 0&)l &&[ϘP isnull(EnterpriseName) OR[&)  EnterpriseName = ""&)  #EnterpriseName <-- "Not Named Yet"&)l ' NEditMessage <-- Received from + Enterprise Name + Enterprise Id + Date + Time'&)l  FileRead(psX12File, psX12Line)&)l Z $Cat psX12Line + CrLf to EditMessage&)tl  $FieldCount <-- ParseLine(psX12Line)&)l \UUӖ FieldCount <2 or >3&)r  Incr EditErrors&) -&&< ACat !!! + string(FieldCount) Fields where 2 or 3 expected + CrLf<&) to EditMessage&)*l TXXΕ EditErrors = 0&)id Εu Fields[1] = "JV"&)r  'Cat "Can't do this yet" to EditMessage&)d M Fields[1] = "CAT"&)  'TransactionOK <-- handlecat(psX12File)&)d &/ Fields[1] = "REQUEST"/&) UUU̔ Fields[2] <> "CAT"&)  Incr EditErrors&) &&& $Cat !!! REQUEST did not specify CAT&) to EditMessage&) 9 +TransactionOK <-- handlerequest(psX12File)9&)d !&&8i Else8&) !&&~ FCat !!! JV, CAT, or REQUEST was expected in first field of first line~&) to EditMessage&)l h99Ò EditErrors <> 0&)et h99 :Cat !!! This psX12 transaction was not processed + CrLf +&) 8 !!! string(EditErrors) + edit errors were counted&) to EditMessage&)l % Send Email&)eE  Recipient.Name <-- EmailAddress&)E c Msg.Recipient[1] <-- Recipient&)E  1Msg.Subject <-- "!*!*Response from Ledger Engine&)E  Msg.NoteText <-- EditMessage&)E I MS.mailSend(Msg)&)f   FileClose(psX12File) &)sQ? Next?&)`_.~ 0lb_psx12inbound.AddItem("Done with this batch")~&)_Ў MSLogoff:&)_r MS.mailLogoff()&)_ DESTROY MS&)_ nst_helper.Text <-- string(psX12Count) + items at attempt + string(Attempt) + Time + Waiting for next check...&)cz'o w_gradesz&)UU?i open?&)74m Connectm&)7Ì&&k dwc_grades.SetTransObjectk&) dwc_grades.Retrieve&)/d  dwc_grades&)/& DataObject dw_grades&&) q cb_saveq&)i[ clicked[&)  RetCode = dwc.grades.Update()&) P, RetCode = 1&)Pq COMMITq&) BB8M Else8&)hϊ &Message "Update Failed " + Error Text&)q ROLLBACK&)  close parent&)tȉo cb_closet&)l[ȉo clicked[&)  close parent&)F w_by_last_name&) needs definition&)^EE w_gradesheet&)NUU?ň open?&)om Connectm&)o&& dwc_gradesheet.SetTransObject&) dwc_gradesheet.RetrieveK&)g dwc_gradesheet&)^ DataObject dw_gradesheet^&)ۆBBg? cb_printg&)  'PrintedOK = dwc_gradesheet.Print(TRUE)&)ᆈ PrinterOK = -1&)pX messagebox "printer error"X&)+t` cb_closet&)+[` clicked[&)E+ close parent&)yEEm" w_rosterm&)iUU? open?&)*m Connectm&)*:&&^ dwc_roster.SetTransObject^&) dwc_roster.Retrieve&)ۄ dwc_roster&)x DataObject dw_roster&)BBgZ cb_printg&)R% #PrintedOK = dwc_roster.Print(TRUE)&)Rǃ PrinterOK = -1&)pPǃX messagebox "printer error"X&)Ft{" cb_closet&)_F[{" clicked[&)F close parent&)899R Projectsj&) Executable&)99 p_projects465&) Generated Application&) projects465.exe&)-LL)^ !inbound_psX12&)>LL .txt files holding JVs &) 9filename is date & time of batch + 009 sequence in batch&) 1st line is email subject lineg&) #remaining lines are email notetext&)5~