WPCV G9:SXz܆Hgo0$&Eurz#o;1GGd`zaƉMfpAb&+D @=! :WRMǾB#F>.|zٓ$܂AD(0}l޾or%pSVBo4vזPHg5|saV {8O襤$lOHAqM:f#\&SK\[ `BtB j`B.hSU9qPVjϘ!bbDLed!:mv($`rv_ JW"IY'ȓж̸ Wa6BŰ`hl7i륛͇QZZ時 tƅGG@O+|2bcq7[HSi 0? 0? 0@ TA pA AA A AABT@Be XJTbJ "Z,Z HZT`hZ ___T`eeee  e  fT (fH}Z}j}|}}}x~>ʀ A; Qg{T )T GT`Ǎ'A Uq U@ד !UN=    &ǔǔ 0D 0K޻޻޻޻޻޻޻ D-)Lexmark Optra S 1250,,,,,,0gXwContinue@ [ <K@:_D^ c2sIf2 b2ж4FXb2"C1f2Nr3 .d2 5'sb2K o2<n6 Ȝ~4*9Backup3|x U($ (04 BP8,H X x Hl@8P  ((8D022, 0pHHDP8xL$l<x\PP h ldD,xPP\<(XX`H4P0TTR 3'T 49T00  L|0 .,`4 6D4 6`X4 6T8bd" "H( @LH4`;H ( 9999 P9 D ,9  @9 T 9  4 90T Ql@"(p.013$4t5\6P7|:;>?FHdH<V,3]iPjd{0@\aD<G4x=H 999P9 89  9  9 L 9 ( 90\T Q,@"(00H123d4l567|:;?F<V3]@ei\jj0 pad3tDlG<$`hX¨vXPQ d4sxL4s4s8 d d$ d d dL4pDefault Directory for "" + vFile + "" Form Files:p0$hdEditConfig$0hFbChangeD@""MERGE FILES " + vNumber@0nVerdanaPX4 (|P- @4HN- @lh ,@ @ + @HH *  Tb 9 @H* 8  TRH G @\H F  T U @PHj T  T( c @$Hr8 b  TLFd q @dHzP p  T\jl  @tH ~  T~| @H  T. @H  T BY22H eT WPfne20 X,F , Z staticp button$  8," ,h `  $<vFileMerge9$PrF9vDirForm$vFileMerge8$vDirForm$,2 ,*.frmerF8$vFileMerge7$*.frmvDirForm\$PvFileMerge6$*.frmvDirForm<,>6 ,($vFileMerge4$TvDirFormDvDirFormXNext >>@<""Data File " + vN + ":"<H, ,<$<< Previous$,J^ ,@*.frmerF4$PvFileMerge3$*.frm,N ,erF3$vFileMerge2$rF2*.frmvDirForm`, ,PerF6t, ,(*.frmerF7L$vFileMerge5$8rF54*.frm  x ,vDirForm8vBOn + vDirForm + vBOff8 0 LD V pp"Configuration of """ + vFile + """ MultiMerge" p&CancelrCancel&Done bDoneS1e,Changel<vBOn + vDirForm + vBOff< vDirForm S2(WPsqf20$vFileMerge1$rF1<*.frmvDirForm9:H rForm9 8:|rForm8t7:lrForm75d6:drForm6$(5:rForm5 P4:rForm4\3:(HrForm32rForm2P1:$WPstatic20$$DForm Files$ rForm1 @BGB1 SetDirectories@ ')  _,EnvelopeMacro##F&Page  1  ڀof  11  CheckDirectory@(3'$  !  End@fVerify*+ (_2623  ..(O$*G+M (_25   /%` ` hp x /23  ..  5+ ` hp x 5  *D+M (_24   ," hp x ,23  ..  5+ ` hp x 5  EndVerify@*A+M (_23  ` ) hp x )23  ..  5+ ` hp x 5  *>+M (_22   &hhp x &23  ..  5+ ` hp x 5  *;+M (_21   #p x #23  ..  5+ ` hp x 5  *8+M (_20  h  p x 23  ..  5+ ` hp x 5  *5+M (_19   pp x 23  ..  5+ ` hp x 5  *2+M (_18    x 23  ..  5+ ` hp x 5  * (_1723  Ԁ*GM (_16   /%` ` hp x /23  Ԁ  5+ ` hp x 5  *DM (_15   ," hp x ,23  Ԁ  5+ ` hp x 5  *AM (_14  ` ) hp x )23  Ԁ  5+ ` hp x 5  *>M (_13   &hhp x &23  Ԁ  5+ ` hp x 5  *;M (_12   #p x #23  Ԁ  5+ ` hp x 5  *8M (_11  h  p x 23  Ԁ  5+ ` hp x 5  *5M (_10   pp x 23  Ԁ  5+ ` hp x 5  (2M &_9    x 23  Ԁ  5+ ` hp x 5  ( &_823  (GM &_7   /%` ` hp x /23   5+ ` hp x 5  (DM &_6   ," hp x ,23   5+ ` hp x 5  (AM &_5  ` ) hp x )23   5+ ` hp x 5  (>M &_4   &hhp x &23   5+ ` hp x 5  (;M &_3   #p x #23   5+ ` hp x 5  (8M &_2  h  p x 23   5+ ` hp x 5  (5M &_1   pp x 23   5+ ` hp x 5  &2M $_    x 23   5+ ` hp x 5  EditConfig@fVerifySetDirectories@fVerifySetDirectories@ReadConfig@fVerifyReadConfig@ (,4 BPT`TPH0LDH(tl`H8D,22F @(``D, ,zp``tPhQ4@D``tPhQ4-0HATV$``tPhQ4-0HATV$V<iDo,qXG( 8PdPd P8p$pPl,,h WPfne20 `)DX f \P static <@SET DEFAULT DIRECTORIES:@  H$tForm Files:$,RJ,Xbutton8$rvDirConfig$4$rDirConfig$?PathDocument XvDirForms rDirForms t0P @<P`bD/ @HP` Phv<!K @P`4 Ph8 <22$Xt}22XtDtS4eCanceltpbCancel@DVerdana(DSet Defaults for MultiMergeD$`OKd hbOKH <S2V8iMerge Configurations:8@?PathDocument, dSetDirs( 0s14`t@hQ4-0HA<V$V<i0jDo,qXG( 8Pd G(   (T4 0BP ( < pT$p PPHP ,  l$0 H8D22} >HHDP8 @ |  d h PXh@iT8!H $ , , hQL"4'@*0IKT4Veg8iLjm(n<o( G0I$T8!H $ , , hQL"4'@*0I T8If no location is specified, it will assume it can be found inP0 d D t dh\ PIf no location is specified, it will assume it can be found inl,ZV ,\$ Z6$,@ENTER CONFIGURATION FILE:@h WPfne20 HnidRunigT static  ~ buttonup, ,P@CONFIGURATION FILE TO USE:@ $0WPstatic20$ 2 $,(If a data file is selected here, it will be used for all the merges. If blank, the file(s) specified in the configuration file will be used.),aVerdanaEdit &Runi4"" + vDirConfig + ""4LS1(,F>,*.mmgd j4 bRun (Set &Defaults(bReset&Cancel,uRun MultiMerge,NbCancelH(vDestination(D(wrDestinationd(< 4?PathDocument * HS4S3  BAbout...T hbAbout4$H $, hQ"@*K<2P gRHT4V$ghLjXm(no DG ĄI8QDTd@ * HvFileData  rFileData P*.dat8 bEditData $(nbEditConfig$$vFileConfig$$rFileConfig$vDirConfigLvDirForm( DATA FILE: $TS3S58 Combine to One File:8`<MERGED FILES DESTINATION:<@D ovCombine 4L @H Hf  hz   @H H' @H H$2w @H H < hv8 < XNd @H HnD X hH2Ai2}i2 i- i" <NQ DJXS62< <rCombine TT<End@UpdateValues@CheckDirectory@ 8(HH40BPL0phP0h,hH0P,8DD22K @VHHDl,~F,D dMissing vFileTP ^ h WPfne20 buttonstaticX(HCancel Merge( Skip File bSkip Respecify $>bRespecify$L   hv32K3232X@\Z  bCancel5 HMisL cannot be located. Respecify?L4jForm File Not Found4@@VerdanarFilet <vPath\ RvFileText XS14xHD @hQz%,2y39<?PXjG\,֌dxHHvFilEditData@EditConfig@EditConfig@ X(``4BPP804XP0x,hl,8DD22K @`HHDl,nF ,TP ^ h WPfne20 buttonstaticXSkip((Cancel Merge(HMisL cannot be located. Respecify?L@@VerdanabSkip\t(tvDestinationF(p$xrDirectory$DdNoDird<vDestination\,2vString`4GDirectory Not Found4rCancel PRespecify $prRespecify$ X@\HZp  htv32K3232 XS1Y4xH@hQz),2??PtTDYXj\}Gp`dx``S1YdCallEditUpdateValues@SetHomeDir@FixName@UpdateValues@StartVerify@ (4BPL  H DD P  h | p (( 0  t (8D22, 0LHHDP D | h` P dPP   \ t 4t$PP\(X\`<@| PTTR 3'T 49T00 @ @ hD$ 0 .,`4 6D4 6`X4 6T8bd" "H( @LH4`;H ( 9999 P9 D ,9  @9 T 9  4 90T Ql@"(p.013$4t5\6P7|:;>?FHdH<V,3]iPjd{0@\X`9H 0n999 P9 D ,9  @9 T 9 4 0T 4`9H999 P9 D ,9 @9 T 4 0T Q@"(00\1H23d4l5P6$7:;FH<V(3]@ejj La??|3 tD<lGp<d`CCXQd4s`4CXQd4s4s,4$dDirConfigs$$CvFileForm2s$4pDefault Directory for "" + vFile + "" Form Files:pD@""MERGE FILES " + vNumber@P l | x <  8 P cS120nVerdana 6 , vFileForm1 H eT WPfne20  Z staticp button$  8,&" ,h `  $vFileMerge8$vDirForm$, ,erF8$vFileMerge7$*.frmvDirForm$PvFileMerge6$*.frm\vDirForm<,VB ,4$vFileMerge4$vDirFormvDirFormXNext >>@<""Data File " + vN + ":"<<$<< Previous$,2& ,(*.frm,erF4D$PvFileMerge3$*.frm, ,@erF3`,f ,erF6t, ,*.frmerF7T$vFileMerge5$PrF5L*.frm  x 8vDirForm<BbSetv( rvDirForm  rDirForm LD V Lp"Configuration of """ + vFile + """ MultiMerge" p&Cancel&DoneS1el<vBOn + vDirForm + vBOff< Set vDirForm(WPsqf209:H rForm9 p8:rForm8t7:lrForm75|6:drForm6d(5:$rForm5 4:PrForm43:(\rForm3H2rForm2P1:$WPstatic20$$DForm Files$ rForm1 @BGB1  $cvFileForm1H$cS11- @4HN<   - T(B@ @ + @HH"+  @H = @HH*#<  @H\ O @H@ L TDP a @Hj, ^ T4$ s @dHrP p TTFd @|Hz  Tjl @tH  T~ @pH  T. @H! (@HH@HHdCallRunfVerifydCallRunUpdateValues@StartVerify@Level 1Level 2Level 3Level 4Level 5Level 1Level 2Level 3Level 4Level 5Level 1Level 2Level 3Level 4Level 5Level 1Level 2Level 3Level 4Level 5Level 1Level 2Level 3Level 4Level 5Q&OLE 2.0 Box <=8C HKKKKEndVerify@FixName@EditData@fVerifydSetDirsdMissingdDirConfigdRundEditConfig dAbout dNoDirdEditDataFixName@StartConfig@ X (T 4 0BP@XL@ ( h ,,tP04   8DD22} @ HHD(Dl(T H@4H@H;tV<bc(hij lmLnohăDDpGPMd5ָd,HT mPnohăDDpGMd5ָddH`Licensed under Creative Commons Attribution - Non Commercial 2.0 License, http://creativecommons.org/licenses/by-nc/2.0/$WPstatic20$l  @nVerdana\  ,H0T, HtDdAbout j "   4 pbuttonA$0Michael A. Koenecke0MultiMerge: a WordPerfect macro to merge multiple files with a single data source, reading and writing its own configuration files. staticVersion:3S2  S4H<aS9(S3iS8  ,Copyright 2005,2S6 0About MultiMerge^0dHOKBttn<http://macros.koenecke.us<h evVersion T .( tOKtic tS7Date:@HHf @HHv(<$ @hH( @HHL<(< @PH25 @HH  <2J @HH^<<x @HH<K@HHd<i2tpS1PvDateLS5,$,t,H@H;t$ 8(444 BP$DPH0xL4dH8D<2Ad  pHHDh buttonX% \ j t lPSView80 Cancel)WPbmp20WPClr20$vSaveClose$(eEdit your data file, then click on ""Save"" to save changes or ""Cancel"" to cancel. (You can move this dialog out of the way while editing.)(Ph#Ph<K@HfH)E` < ddEditData &CancelSbCancelt&SavebSave,<Edit Data File,S1staticpVerdana4pHp<3>j>t%hG漘ĨӔ7dp4$4staticp$StartConfig@dCallEditSetHomeDir@Continue@WriteConfig@WriteConfig@WriteConfig@)AZ(Amerigo BT RomanEnd@ContinueTest@(9 Z6Times New Roman RegularHswContinueTest@dCallRun95 C:\Data\Macros\MultiMerge.wcm"%%&$&5&1  vVersion = "3.31"o3.31VVERSION?f vDate = "June 16, 2007"!o June 16, 2007VDATE{t8Application (WordPerfect; "WordPerfect"; Default!; "EN"))OnCancel (End@)H oENDLOB*@ vGlobal (vFileForm = {"";""; ""; ""; ""; ""; ""; ""; ""; ""}; vName = "MultiMerge.wcm" - ".wcm"; vDescrip = "a WordPerfect macro to merge multiple files with a single data source, reading and writing its own configuration files."; vDDirForm; vDirConfig; vFileConfig; vFileData; vMissing; vDirFont; BOn = NToC(65048); BOff = NToC(65049); IOn = NToC(65040); IOff = NToC(65041))oooooooooo[ P  VFILEFORM#oMultiMerge.wcmo.wcmVNAMEowa WordPerfect macro to merge multiple files with a single data source, reading and writing its own configuration files.VDESCRIP VDDIRFORM VDIRCONFIG VFILECONFIG VFILEDATAVMISSINGVDIRFONTHxLIB)BONHxLIB)BOFFHxLIB)IONHxLIB)IOFFa +Global (vExtForm = "frm"; vExtData = "dat") ofrmVEXTFORM odatVEXTDATACs vMissing = "<none selected>"%o<none selected>VMISSING3 vDirFont = "Verdana"oVerdanaVDIRFONTW &vDestination = "<Data File Directory>"1o<Data File Directory> VDESTINATION3 vFileData = vMissingrVMISSING VFILEDATA7H vFileConfig = vMissingrVMISSING VFILECONFIGSs $If (Dimensions (MacroArgs[]; 0) > 0)H[W MACROARGS[La[LIB*[- A  vFileConfig = MacroArgs[1] [[S MACROARGS[ VFILECONFIG EndIf! RvRegKey = RegistryCreateKey (CurrentUser!; "Software\Corel\WordPerfect\MacroData")"H[LIOo$Software\Corel\WordPerfect\MacroDataLNB1*VREGKEYtiIf ((RegistryQueryValue (vRegKey; "vDDirForm") = 0) | (RegistryQueryValue (vRegKey; "vDDirForm") = ""))#HrVREGKEYLIo vDDirFormLNB9*[*HrVREGKEYLIo vDDirFormLNB9*o*A9 Call (SetDirectories@)$$SETDIRECTORIES@Else%y7 vDDirForm = RegistryQueryValue (vRegKey; "vDDirForm")&HrVREGKEYLIo vDDirFormLNB9* VDDIRFORM}T9 vDirConfig = RegistryQueryValue (vRegKey; "vDirConfig")'HrVREGKEYLIo vDirConfigLNB9* VDIRCONFIGEndIf(DDialogDefine ("About"; 50; 50; 175; 125; Percent!; "About " + vName).HoAboutLQ[2LE[2LE[LE[}LE[LIoAbout rVNAMELNB'@c,DialogSetProperties ("About"; vDirFont; 11p)/HoAboutLQrVDIRFONTLN g&@LMB'@+bDialogAddText ("About"; "S1"; 5; 5; 165; 25; WPChars!+Left!; BOn + vName + BOff + ": " + vDescrip)0HoAboutLQ oS1LQ[LE[LE[LE[LE[ [LI rBONrVNAMErBOFF o: rVDESCRIPLQB'@UDialogAddText ("About"; "S2"; 5; 30; 30; 10; WPChars!+Left!; IOn + "Version:" + IOff)1HoAboutLQ oS2LQ[LE[LE[LE[ LE[ [LI rIONoVersion:rIOFFLQB'@ >DialogAddText ("About"; "S3"; 60; 31; 36; 10; Left!; vVersion)2HoAboutLQ oS3LQ[<LE[LE[$LE[ LE[LIrVVERSIONLQB'@_RDialogAddText ("About"; "S4"; 5; 40; 30; 10; WPChars!+Left!; IOn + "Date:" + IOff)3HoAboutLQ oS4LQ[LE[(LE[LE[ LE[ [LI rIONoDate:rIOFFLQB'@;DialogAddText ("About"; "S5"; 60; 40; 65; 10; Left!; vDate)4HoAboutLQ oS5LQ[<LE[(LE[ALE[ LE[LIrVDATELQB'@[DialogAddText ("About"; "S6"; 5; 50; 55; 10; WPChars!+Left!; IOn + "Copyright 2005" + IOff)5HoAboutLQ oS6LQ[LE[2LE[7LE[ LE[ [LI rION#oCopyright 2005rIOFFLQB'@aDialogAddText ("About"; "S7"; 60; 50; 75; 10; WPChars!+Left!; BOn + "Michael A. Koenecke" + BOff)6HoAboutLQ oS7LQ[<LE[2LE[KLE[ LE[ [LI rBON-oMichael A. KoeneckerBOFFLQB'@hDialogAddText ("About"; "S5"; 60; 58; 120; 10; WPChars!+Left!; BOn + "http://macros.koenecke.us" + BOff)7HoAboutLQ oS5LQ[<LE[:LE[xLE[ LE[ [LI rBON9ohttp://macros.koenecke.usrBOFFLQB'@yDialogAddText ("About"; "S8"; 6; 75; 165; 25; WPChars!+Left!; IOn + "Licensed" + IOff + " under Creative Commons Attribution - Non Commercial 2.0 License: http://creativecommons.org/licenses/by-nc/2.0/")9HoAboutLQ oS8LQ[LE[KLE[LE[LE[ [LI rIONoLicensedrIOFFop under Creative Commons Attribution - Non Commercial 2.0 License: http://creativecommons.org/licenses/by-nc/2.0/LQB'@mGDialogAddPushButton ("About"; "OKBttn"; 60; 105; 50; 14; OKBttn!; "OK"):HoAboutLQoOKBttnLQ[<LE[iLE[2LE[LE[LI oOKLNB'@ LDialogDefine ("Run"; 50; 50; 260; 125; Percent!+NoCloseBox!; "Run " + vName)=H oRunLQ[2LE[2LExLE[}LE[xLIoRun rVNAMELNB'@_m*DialogSetProperties ("Run"; vDirFont; 12p)>H oRunLQrVDIRFONTLN g(@LMB'@eDialogAddText ("Run"; "S1"; 6; 5; 130; 10; WPChars!+Left!; BOn + "CONFIGURATION FILE TO USE:" + BOff)?H oRunLQ oS1LQ[LE[LE[LE[ LE[ [LI rBON;oCONFIGURATION FILE TO USE:rBOFFLQB'@&`DialogAddFileNameBox ("Run"; "rFileConfig"; 5; 15; 225; 12; 0; vFileConfig; vDirConfig; "*.mmg")@H oRunLQo rFileConfigLQ[LE[LE[LE[ LE[LIv VFILECONFIGLRr VDIRCONFIGL No*.mmgL NB z'@FDialogAddPushButton ("Run"; "bEditConfig"; 235; 15; 20; 12; 0; "Edit")AH oRunLQo bEditConfigLQ[LE[LE[LE[ LE[LIoEditLNB'@#DialogAddText ("Run"; "S3"; 15; 30; 220; 10; WPChars!+Left!; IOn + "(If no location is specified, it will assume it can be found in" + IOff)CH oRunLQ oS3LQ[LE[LE[LE[ LE[ [LI rIONo?(If no location is specified, it will assume it can be found inrIOFFLQB'@iDialogAddText ("Run"; "S4"; 15; 39; 215; 10; WPChars!+Left!; IOn + """" + vDirConfig + """" + ")" + IOff)DH oRunLQ oS4LQ[LE['LE[LE[ LE[ [LI rION o"r VDIRCONFIG o" o)rIOFFLQB'@)VDialogAddText ("Run"; "S5"; 6; 50; 119; 10; WPChars!+Left!; BOn + "DATA FILE:" + BOff)EH oRunLQ oS5LQ[LE[2LE[wLE[ LE[ [LI rBONo DATA FILE:rBOFFLQB'@cDialogAddFileNameBox ("Run"; "rFileData"; 5; 60; 225; 12; 0; vFileData; vDDirForm; "*." + vExtData)FH oRunLQo rFileDataLQ[LE[<LE[LE[ LE[LIv VFILEDATALRr VDDIRFORML N o*.rVEXTDATAL NB z'@ DDialogAddPushButton ("Run"; "bEditData"; 234; 60; 20; 12; 0; "Edit")GH oRunLQo bEditDataLQ[LE[<LE[LE[ LE[LIoEditLNB'@eeDialogAddText ("Run"; "S6"; 6; 78; 119; 10; WPChars!+Left!; BOn + "MERGED FILES DESTINATION:" + BOff)HH oRunLQ oS6LQ[LE[NLE[wLE[ LE[ [LI rBON9oMERGED FILES DESTINATION:rBOFFLQB'@gDialogAddFileNameBox ("Run"; "rDestination"; 6; 88; 225; 12; DirOnly!; vDestination; ?PathDocument; "")IH oRunLQo rDestinationLQ[LE[XLE[LE[ LE[LIv VDESTINATIONLRHB L NoL NB z'@[EDialogAddPushButton ("Run"; "bRun"; 65; 105; 50; 14; OKBttn!; "&Run")JH oRunLQobRunLQ[ALE[iLE[2LE[LE[LIo&RunLNB'@PDialogAddPushButton ("Run"; "bCancel"; 125; 105; 50; 14; CancelBttn!; "&Cancel")KH oRunLQobCancelLQ[}LE[iLE[2LE[LE[LIo&CancelLNB'@UDialogAddPushButton ("Run";"bReset"; 210; 105; 45; 14; 0; ButtonText:"Set &Defaults")LH oRunLQobResetLQ[LE[iLE[-LE[LE[LI!o Set &DefaultsLNB'@NDialogAddPushButton ("Run";"bAbout"; 6; 105; 34; 14; 0; ButtonText:"About...")MH oRunLQobAboutLQ[LE[iLE["LE[LE[LIoAbout...LNB'@sDialogAddCheckBox ("Run"; "rCombine"; 150; 77; 80; 10; "Combine to One File:"; vCombine; CheckboxAuto!+TextOnLeft!)OH oRunLQorCombineLQ[LE[MLE[PLE[ LE/oCombine to One File:LNvVCOMBINELR[[@L IB u'@_*DialogShow("Run"; "WordPerfect"; dCallRun)RH oRunLQo WordPerfectLQoDCALLRUNLOB'@Ai vResult = MacroDialogResultS)rMACRODIALOGRESULTVRESULT# CallBackWaitTHE* WIf (StrScan(vFileData; -1; EqualTo!; "\") = 0) // If no path for data file, add defaultUHr VFILEDATALQ[<LT[LI o\L@B)[*(>OI!" vFileData = vDDirForm + vFileDataVr VDDIRFORMr VFILEDATA VFILEDATA!EndIfW(>9#Label (CheckDirectory@)_a#+If (vDestination = "<Data File Directory>")`r VDESTINATION1o<Data File Directory>*A@$^ If (DoesFileExist(vFileData)) // If unspecified destination + data file, set there as defaultaHr VFILEDATALVBN'A$L vDestination = SubStr(vFileData; 1; StrScan(vFileData; -1; EqualTo!; "\"))bHr VFILEDATALQ[LUHr VFILEDATALQ[<LT[LI o\L@B)LUB) VDESTINATION]% EndIfcA%ElsedmQ%T If (DoesDirectoryExist(vDestination)) // Make sure the destination directory existseHr VDESTINATIONLVBD'"DY9&' If (StrRight(vDestination; 1) <> "\")fHr VDESTINATIONLQ[LUB) o\;DS&$ vDestination = vDestination + "\"gr VDESTINATION o\ VDESTINATION& EndIfhDA' ElseiTQl'M vString = BOn + """" + vDestination + """ is not a valid directory." + BOffj rBON o"r VDESTINATION=o" is not a valid directory.rBOFFVSTRING'V DialogDefine ("NoDir"; 50; 50; 200; 75; Percent!+NoCloseBox!; "Directory Not Found")kHoNoDirLQ[2LE[2LE[LE[KLE[xLI-oDirectory Not FoundLNB'@gw(. DialogSetProperties ("NoDir"; vDirFont; 11p)lHoNoDirLQrVDIRFONTLN g&@LMB'@(J DialogAddText ("NoDir"; "S1"; 30; 5; 134; 22; WPChars!+Center!; vString)mHoNoDirLQ oS1LQ[LE[LE[LE[LE[ [LIrVSTRINGLQB'@i)e DialogAddFileNameBox ("NoDir"; "rDirectory"; 12; 31; 172; 14; DirOnly!; vDestination; vDirData; "")nH oNoDirLQo rDirectoryLQ[ LE[LE[LE[LE[LIv VDESTINATIONLRrVDIRDATAL NoL NB z'@ *S DialogAddPushButton ("NoDir"; "rRespecify"; 20; 51; 50; 14; OKBttn!; "Respecify")oHoNoDirLQo rRespecifyLQ[LE[3LE[2LE[LE[LIo RespecifyLNB'@*C DialogAddPushButton ("NoDir"; "bSkip"; 75; 51; 50; 14; 0; "Skip")pHoNoDirLQobSkipLQ[KLE[3LE[2LE[LE[LIoSkipLNB'@+X DialogAddPushButton ("NoDir"; "rCancel"; 129; 51; 50; 14; CancelBttn!; "Cancel Merge")qHoNoDirLQorCancelLQ[LE[3LE[2LE[LE[LIo Cancel MergeLNB'@7+ DialogShow ("NoDir")rHoNoDirLQB'@G, vResult := MacroDialogResults)rMACRODIALOGRESULTVRESULT=L, DialogDestroy ("NoDir")tHoNoDirLQB'@/, Switch (vResult)urVRESULTO7, CaseOf "2": Quitv( o2*5P@HE*aQ-+ CaseOf "bSkip": vDestination = vMissingw9Q(obSkip*P@rVMISSING VDESTINATIONQ-# Default: Go (CheckDirectory@)x9Q@#,CHECKDIRECTORY!. EndSwitchy:/ EndIfzf/EndIf{/VvHow := MergeRun.DataFileType.DataFile! // Merge from a data file, unless it is blank.|[VHOW0?If (NOT DoesFileExist(vFileData)) // If no data file entered...}Hr VFILEDATALVBN'{Uy0V MessageBox (; "Error!";"No data file found. Merge results will be blank.") // warning~HoError!LNgo0No data file found. Merge results will be blank.LNBn)@1E vHow := MergeRun.DataFileType.NoData! // and merge with no data.[VHOW1EndIfU)1vMergesDone = 0[ VMERGESDONE1p1 = 1[ P12Repeat"2[If (StrScan(vFileForm[p1]; -1; EqualTo!; "\") = 0) // If no path for this form, use defaultH rP1[S VFILEFORM[LQ[<LT[LI o\L@B)[*Wa2+ vFileForm[p1] = vDDirForm + vFileForm[p1] rP1[r VDDIRFORM rP1[S VFILEFORM[ VFILEFORM[3 EndIfW13J If (DoesFileExist (vFileForm[p1])) // Omits files chosen to be skippedH rP1[S VFILEFORM[LVBN'ii33 If (NOT ?DocBlank)HB){O[K)4 If (?NumberOpenDocuments = 9)HBQ[ *+[4Z MessageBox (; "Error!"; "Ran out of available documents. Current file must be closed.")HoError!LNo<Ran out of available documents. Current file must be closed.LNBn)@#5 Close ()HEYl5 EndIf+[5 EndIfO[5O vTo := MergeRun.OutputFileType.ToNewDoc! // normally, merge to a new document[ VTO}69 If (?DocBlank) // But if the document is blank, use itHB)B]i)7/ vTo := MergeRun.OutputFileType.ToCurrentDoc![ VTO7 EndIfB]7W If ((p1 > 1) and (vCombine)) // If combine to single document, merge to same document rP1[-rVCOMBINE_i8/ vTo := MergeRun.OutputFileType.ToCurrentDoc![ VTO/9 HardPageBreak()HE`9 EndIf_X:; MergeRun (FormFile!; vFileForm[p1]; vHow; vFileData; vTo)H [LI rP1[S VFILEFORM[LVrVHOWLIr VFILEDATALV rVTOLIE :e If ((vDestination <> vMissing) AND (vCombine = 0)) // If there's a destination, save resulting filer VDESTINATIONrVMISSING;rVCOMBINE[*h7u; vExtension = ".wpd"o.wpd VEXTENSION); PosDocTop ()HE05< SearchString ("")H oLQE%/w< NotFound (Off!)H[LIB*@=< SearchNext (Extended!)H[LIE5= If (NOT ?NotFound)HB_A{c9Y= vExtension = ".frm"o.frm VEXTENSION= EndIfc'= SelectOff()HE3>I vFile = StrLeft(vFileForm[p1]; StrLen(vFileForm[p1]) - 4) + vExtensionH rP1[S VFILEFORM[LQH rP1[S VFILEFORM[LQB )[LUB)r VEXTENSIONVFILEm>1 p2 = StrScan(vFileForm[p1]; -1; EqualTo!; "\")H rP1[S VFILEFORM[LQ[<LT[LI o\L@B) P2g?. vFile = StrRight(vFile; StrLen(vFile) - p2)HrVFILELQHrVFILELQB ) rP2LUB)VFILE9}? OnCancel (Continue@)HoCONTINUELOB*@co@, FileSave (vDestination + vFile; ;Prompt!)Hr VDESTINATIONrVFILELN[LIEN3@ Label (Continue@)/cA OnCancel (End@)H oENDLOB*@PB EndIfhIB vMergesDone = vMergesDone + 1r VMERGESDONE[ VMERGESDONEB EndIfii#B p1 = p1 + 1 rP1[ P1?*CUntil (vFileForm[p1] = "") rP1[S VFILEFORM[o*U3_CIf (NOT vMergesDone)r VMERGESDONE{|lCr MessageBox (; "Error!";"No merges were done. No combination of a valid form file and a valid data file existed.")HoError!LNoWNo merges were done. No combination of a valid form file and a valid data file existed.LNBn)@>DEndIf|l#_D Label (End@)DQuitHE*+DLabel (dCallRun)5IE Switch (dCallRun[3])[[S DCALLRUN[m_E* CaseOf "bAbout": DialogShow ("About")(obAbout*Nn@HoAboutLQB'@AF CaseOf "bCancel": Quit܁(obCancel*n@HE*emF- CaseOf "bEditConfig": Call (UpdateValues@)܁(o bEditConfig*q@  UPDATEVALUES@{GF vFileConfig = fVerify(vFileConfig; vDirConfig; "Edit"; "mmg")r VFILECONFIGr VDIRCONFIGoEdit ommgFVERIFY VFILECONFIGH@ DialogControlUpdate ("Run"; "rFileConfig"; vFileConfig)H oRunLQo rFileConfigLQr VFILECONFIGL@B'@cI, CaseOf "bEditData": Call (UpdateValues@)܁(o bEditData*u@  UPDATEVALUES@WJ& DialogDismiss ("Run"; "bRun")H oRunLQobRunLQB'@LKD vFileData = fVerify(vFileData; vDDirForm; "Edit"; vExtData)r VFILEDATAr VDDIRFORMoEditrVEXTDATAFVERIFY VFILEDATAsL4 DialogShow ("Run"; "WordPerfect"; dCallRun)H oRunLQo WordPerfectLQoDCALLRUNLOB'@aM+ CaseOf "bReset": Call (SetDirectories@)܁(obReset*u@$SETDIRECTORIES@Y O' CaseOf "bRun": Call (UpdateValues@)܁(obRun*ف@  UPDATEVALUES@>PG vFileConfig = fVerify(vFileConfig; vDirConfig; "Check"; "mmg")r VFILECONFIGr VDIRCONFIGoCheck ommgFVERIFY VFILECONFIGQE vFileData = fVerify(vFileData; vDDirForm; "Check"; vExtData)r VFILEDATAr VDDIRFORMoCheckrVEXTDATAFVERIFY VFILEDATA+8S p2 = ""o P2SE ForNext (p1; 1; 9) // Check form files before running merges[ P1Y #(F1-FIRST)[ r #(F1-FIRST)y( rP1-y[yc #(F1-STEP)yr #(F1-STEP) rP1 P1Z #(F1-FIRST) rP1r #(F1-STEP)[2Xz-~bz2~OT" If (vFileForm[p1] <> "") rP1[S VFILEFORM[o;~O~U" vString = vFileForm[p1] rP1[S VFILEFORM[VSTRING.VO vFileForm[p1] = fVerify(vFileForm[p1]; vDDirForm; "Check"; vExtForm) rP1[ rP1[S VFILEFORM[r VDDIRFORMoCheckrVEXTFORMFVERIFY VFILEFORM[[W( If (vString <> vFileForm[p1])rVSTRING rP1[S VFILEFORM[;~XJ p2 = "Respecified" // If respecified form, rewrite config fileo Respecified P2+Y EndIf~)9Z EndIf~)Z EndForKy #(F1-FIRST) #(F1-STEP)Kx[ If (p2 = "Respecified") rP2o Respecified*\H vFileConfig = fVerify(vFileConfig; vDirConfig; "Write"; "mmg")r VFILECONFIGr VDIRCONFIGoWrite ommgFVERIFY VFILECONFIG'] EndIfE,^ DialogDestroy("Run")H oRunLQB'@9^ CallBackResumeHE*V_ EndSwitch܁@_Return[|5_Label (UpdateValues@)w2`6 vFileConfig = RegionGetWindowText ("Run.rFileConfig")H%oRun.rFileConfigLQB' VFILECONFIGo`2 vFileData = RegionGetWindowText ("Run.rFileData")H!o Run.rFileDataLQB' VFILEDATA{`8 vDestination = RegionGetWindowText ("Run.rDestination")H'oRun.rDestinationLQB' VDESTINATIONa2a+ vCombine = RegionGetCheck ("Run.rCombine")Ho Run.rCombineLQB'VCOMBINE}aReturn[|ma1Function fVerify(vFile; vDefaultPath; vDo; vType)  VTYPEVDO  VDEFAULTPATHVFILE5Eb Label (StartVerify@)+b Call (FixName@)FIXNAME@Oc" If (DoesFileExist(vPath + vFile))HrVPATHrVFILELVBN'3c If (vDo = "Write") rVDOoWrite*"7d Call (WriteConfig@) WRITECONFIG@e Else5Pe If (vType = "mmg")rVTYPE ommg*7e Call (ReadConfig@) READCONFIG@f EndIf3f If (vDo = "Edit") rVDOoEdit*7Yg If (vType = "mmg")rVTYPE ommg*E9g Call (EditConfig@) EDITCONFIG@h Else5i Call (EditData@)EDITDATA@j EndIfwj EndIfj EndIfj Else)(k vDo = "Check"oCheck VDOubk5 vFileText := """" + vFile + """ cannot be located." o"rVFILE/o" cannot be located. VFILETEXT9k If (vFile = vMissing)rVFILErVMISSING*5l If (vType = "mmg")rVTYPE ommg*PylB vFileText = "No configuration file was specified. Respecify, "go0No configuration file was specified. Respecify,  VFILETEXTm Else^}Sm9 vFileText = "No data file was specified. Respecify, "Uo'No data file was specified. Respecify,  VFILETEXTm EndIf%n EndIf/gn vString = "Skip"oSkipVSTRING5n If (vType = "mmg")rVTYPE ommg*Qn# vFileText := vFileText +"Create"r VFILETEXToCreate VFILETEXTCo EndIfo{o2 vFileText := vFileText +vString + ", or Cancel?"r VFILETEXTrVSTRINGo , or Cancel? VFILETEXToS DialogDefine ("Missing"; 50; 50; 200; 75; Percent!+NoCloseBox!; "File Not Found")HoMissingLQ[2LE[2LE[LE[KLE[xLI#oFile Not FoundLNB'@kp0 DialogSetProperties ("Missing"; vDirFont; 12p)HoMissingLQrVDIRFONTLN g(@LMB'@pN DialogAddText ("Missing"; "S1"; 30; 5; 135; 24; WPChars!+Center!; vFileText)HoMissingLQ oS1LQ[LE[LE[LE[LE[ [LIr VFILETEXTLQB'@zq[ DialogAddFileNameBox ("Missing"; "rFile"; 12; 31; 172; 14; 0; vFile; vPath; "*." + vType)H oMissingLQorFileLQ[ LE[LE[LE[LE[LIvVFILELRrVPATHL N o*.rVTYPEL NB z'@rU DialogAddPushButton ("Missing"; "bRespecify"; 20; 51; 50; 14; OKBttn!; "Respecify")HoMissingLQo bRespecifyLQ[LE[3LE[2LE[LE[LIo RespecifyLNB'@rL DialogAddPushButton ("Missing"; "b" + vString; 75; 51; 50; 14; 0; vString)HoMissingLQ obrVSTRINGLQ[KLE[3LE[2LE[LE[LIrVSTRINGLNB'@-sT DialogAddPushButton ("Missing"; "bCancel"; 129; 51; 50; 14; CancelBttn!; "Cancel")HoMissingLQobCancelLQ[LE[3LE[2LE[LE[LIoCancelLNB'@;s DialogShow ("Missing") HoMissingLQB'@Et vResult = MacroDialogResult )rMACRODIALOGRESULTVRESULTA]t DialogDestroy ("Missing") HoMissingLQB'@/t Switch (vResult) rVRESULT]Ot" CaseOf "1": Go (StartVerify@) ( o1*k@, STARTVERIFY v_ CaseOf "bCreate": If ((vFile = vMissing) OR (vFile = "")) // If no name, set to "New File"l(obCreate*i@rVFILErVMISSING*rVFILEo*?Av vFile ="New File"oNew FileVFILE%w EndIf9x Call (FixName@)FIXNAME@??y Call (EditConfig@) EDITCONFIG@!}z EndSwitchl@z EndIf+z Go (EndVerify@), ENDVERIFY-{ Label (FixName@).|X If ((vFile <> vMissing) & (vFile <> "") & (ToLower(StrRight(vFile;4)) <> "." + vType))rVFILErVMISSING;rVFILEo;HHrVFILELQ[LUB)LQB) o.rVTYPE;Ei|/ vFile = vFile + "." + vType // Add extensionrVFILE o.rVTYPEVFILEk} EndIfE7} vPath = vDefaultPathr VDEFAULTPATHVPATH[~( p1 = StrScan(vFile; -1; EqualTo!; "\")HrVFILELQ[<LT[LI o\L@B) P1se~4 If (p1 > 0) // Separate the file name and the path rP1[-I~ vPath = SubStr(vFile; 1; p1)HrVFILELQ[LU rP1LUB)VPATHGJ If (StrPos(vPath; ":") = 0)HrVPATHLQ o:LQB )[*ΥK vPath = vDefaultPath + vPath r VDEFAULTPATHrVPATHVPATH EndIf!ΥsI4 vFile = SubStr(vFile; p1 + 1; StrLen(vFile) - p1)"HrVFILELQ rP1[LUHrVFILELQB ) rP1LUB)VFILE EndIf# Return$[|3K Label (EditConfig@)&Y' If (NOT DoesFileExist(vPath + vFile))'HrVPATHrVFILELVBN'{JO vFileForm = {"";""; ""; ""; ""; ""; ""; ""; ""; ""} // Clear form file names(oooooooooo[ P  VFILEFORM EndIf)5= If (vDDirForm = "")*r VDDIRFORMo*C vDDirForm = ?PathDocument+HB  VDDIRFORM߃ EndIf,_!* vString = """" + vFile + """ MultiMerge"- o"rVFILEo " MultiMergeVSTRING7v Label (StartConfig@).W& If (StrRight(vDDirForm; 1) <> "\")/Hr VDDIRFORMLQ[LUB) o\;\Im vDDirForm = vDDirForm + "\"0r VDDIRFORM o\ VDDIRFORM߅ EndIf1\-e DialogDefine ("EditConfig"; 50; 50; 300; 200; Percent!+NoCloseBox!; "Configuration of " + vString)2Ho EditConfigLQ[2LE[2LEx,LE[LE[xLI)oConfiguration of rVSTRINGLNB'@s4 DialogSetProperties ("EditConfig"; vDirFont; 10p)3Ho EditConfigLQrVDIRFONTLN g$@LMB'@f DialogAddText ("EditConfig"; "S1"; 45; 5; 200; 10; WPChars!+Left!; IOn + "Default Directory for """ + vFile + """ Form Files:" + IOff)5Ho EditConfigLQ oS1LQ[-LE[LE[LE[ LE[ [LI rION5oDefault Directory for "rVFILE!o " Form Files:rIOFFLQB'@-C p1 = vDDirForm6r VDDIRFORM P1G If (StrLen(vDDirForm) > 70)7Hr VDDIRFORMLQB )[F-ވD p1 = StrLeft(vDDirForm; 3) + " . . . " + StrRight(vDDirForm; 65)8Hr VDDIRFORMLQ[LUB)o . . . Hr VDDIRFORMLQ[ALUB) P1c EndIf9T DialogAddText ("EditConfig"; "S2"; 45; 15; 245; 10; WPChars!+Left!+Filename!; p1):Ho EditConfigLQ oS2LQ[-LE[LE[LE[ LE[ [[LI rP1LQB'@5L DialogAddPushButton ("EditConfig"; "bChange"; 8; 13; 30; 14; 0; "Change");Ho EditConfigLQobChangeLQ[LE[ LE[LE[LE[LIoChangeLNB'@I DialogAddGroupBox ("EditConfig"; "GB1"; 8; 30; 285; 145; "Form Files")<Ho EditConfigLQ oGB1LQ[LE[LExLE[LEo Form FilesLNB|'@76 ForNext (p1; 1; 9)=[ P1Y #(F2-FIRST)[ r #(F2-FIRST)x( rP1-O[Vc #(F2-STEP)r #(F2-STEP) rP1 P1Z #(F2-FIRST) rP1r #(F2-STEP)[2-21 p2 = NumStr(p1)>H rP1L@B) P29 p3 = 15 * (p1 - 1)?[ rP1[: P3~k DialogAddText ("EditConfig"; "rForm" + p2; 13; 42 + p3; 50; 10; WPChars!+Left!; IOn + p2 + ":" + IOff)AHo EditConfigLQorForm rP2LQ[ LE[* rP3LE[2LE[ LE[ [LI rION rP2 o:rIOFFLQB'@sw DialogAddFileNameBox ("EditConfig"; "rF" + p2; 23; 40 + p3; 265; 12; 0; vFileForm[p1]; vDDirForm; "*." + vExtForm)CH o EditConfigLQ orF rP2LQ[LE[( rP3LEx LE[ LE[LI rP1[W VFILEFORM[LRr VDDIRFORML N o*.rVEXTFORML NB z'@t EndForD #(F2-FIRST) #(F2-STEP)ˎP DialogAddPushButton ("EditConfig"; "bDone"; 89; 180; 50; 14; OKBttn!; "&Done")EHo EditConfigLQobDoneLQ[YLE[LE[2LE[LE[LIo&DoneLNB'@FY DialogAddPushButton ("EditConfig"; "rCancel"; 159; 180; 50; 14; CancelBttn!; "&Cancel")FHo EditConfigLQorCancelLQ[LE[LE[2LE[LE[LIo&CancelLNB'@Aʏ DialogShow ("EditConfig")GHo EditConfigLQB'@Eǐ vResult = MacroDialogResultH)rMACRODIALOGRESULTVRESULTG DialogDestroy ("EditConfig")IHo EditConfigLQB'@? If (vResult = "bChange")JrVRESULTobChange*85H Call (SetHomeDir@)K SETHOMEDIR@38 Go (StartConfig@)L, STARTCONFIG' EndIfM83_ If (vResult = "1")NrVRESULT o1*5 ForNext (p1; 1; 9)O[ P1Y #(F3-FIRST)[ r #(F3-FIRST)u( rP1-L[Sc #(F3-STEP)r #(F3-STEP) rP1 P1Z #(F3-FIRST) rP1r #(F3-STEP)[2-j2jP If (vFileForm[p1] = "") // Eliminate blanks in the middle and move files up.P rP1[S VFILEFORM[o*.;ܕ ForNext (p2; p1; 9)Q rP1 P2Y #(F4-FIRST)[ r #(F4-FIRST)( rP2-[c #(F4-STEP)!r #(F4-STEP) rP2 P2Z #(F4-FIRST) rP2r #(F4-STEP)[2-2GX If (vFileForm[p2] <> "")R rP2[S VFILEFORM[o;W& vFileForm[p1] = vFileForm[p2] S rP1[ rP2[S VFILEFORM[ VFILEFORM[= vFileForm[p2] = ""T rP2[o VFILEFORM[% p2 = 9U[ P2! EndIfV! EndForWy #(F4-FIRST) #(F4-STEP)v EndIfX.ЙP If (ToUpper(StrLeft(vFileForm[p1]; StrLen(vDDirForm))) = ToUpper(vDDirForm))YHH rP1[S VFILEFORM[LQHr VDDIRFORMLQB )LUB)LQB)Hr VDDIRFORMLQB)*AgX vFileForm[p1] = StrRight(vFileForm[p1]; StrLen(vFileForm[p1]) - StrLen(vDDirForm))Z rP1[H rP1[S VFILEFORM[LQH rP1[S VFILEFORM[LQB )Hr VDDIRFORMLQB )LUB) VFILEFORM[ EndIf[Ae EndFor\ #(F3-FIRST) #(F3-STEP)? If (vFileForm[1] <> "")][[S VFILEFORM[o;9 Call (WriteConfig@)^ WRITECONFIG@# EndIf_y EndIf` Returna[|/ Label (EditData@)c? FileOpen(vPath + vFile)dHrVPATHrVFILELVE7 InhibitInput (Off!)eH[LIB@?h DialogDefine ("EditData"; 0; 50; 65; 100; Modeless!+Sizeable!+Percent!+NoCloseBox!; "Edit Data File")gHoEditDataLQ[LE[2LE[ALE[dLE[[[xLI#oEdit Data FileLNB'@o 2 DialogSetProperties ("EditData"; vDirFont; 10p)hHoEditDataLQrVDIRFONTLN g$@LMB'@M DialogAddPushButton ("EditData"; "bSave"; 4; 80; 25; 14; OKBttn!; "&Save")iHoEditDataLQobSaveLQ[LE[PLE[LE[LE[LIo&SaveLNB'@*V DialogAddPushButton ("EditData"; "bCancel"; 35; 80; 25; 14; CancelBttn!; "&Cancel")jHoEditDataLQobCancelLQ[#LE[PLE[LE[LE[LIo&CancelLNB'@С DialogAddText ("EditData"; "S1"; 3; 2; 60; 75; WPChars!+Center!; IOn + "Edit your data file, then click on ""Save"" to save changes or ""Cancel"" to cancel. (You can move this dialog out of the way while editing.)" + IOff)mHoEditDataLQ oS1LQ[LE[LE[<LE[KLE[ [LI rIONoEdit your data file, then click on "Save" to save changes or "Cancel" to cancel. (You can move this dialog out of the way while editing.)rIOFFLQB'@+) Display (On!)nH[LIB~@?y DialogShow ("EditData")oHoEditDataLQB'@Gӣ vResult = MacroDialogResultp)rMACRODIALOGRESULTVRESULT51 If (vResult = "1")qrVRESULT o1*'+ Close (Yes!)rH[LIEY Elses)4 Close (No!)tH[LIEY EndIfuEܥ DialogDestroy ("EditData")vHoEditDataLQB'@59 InhibitInput (On!)wH[LIB@ Returnx[|3 Label (SetHomeDir@)zZk DialogDefine ("DirConfig"; 50; 50; 300; 200; Percent!+NoCloseBox!; "Set " + vString + " Files Directory")|Ho DirConfigLQ[2LE[2LEx,LE[LE[xLIoSet rVSTRING'o Files DirectoryLNB'@o2 DialogSetProperties ("DirConfig"; vDirFont; 12p)}Ho DirConfigLQrVDIRFONTLN g(@LMB'@ DialogAddText ("DirConfig"; "S0"; 45; 5; 200; 10; WPChars!+Left!; IOn + "Default Directory for """ + vFile + """ Form Files:" + IOff)Ho DirConfigLQ oS0LQ[-LE[LE[LE[ LE[ [LI rION5oDefault Directory for "rVFILE!o " Form Files:rIOFFLQB'@]D DialogAddPushButton ("DirConfig"; "bSet"; 8; 13; 30; 14; 0; "Set")Ho DirConfigLQobSetLQ[LE[ LE[LE[LE[LI oSetLNB'@ީg DialogAddFileNameBox ("DirConfig"; "rDirForm"; 43; 14; 245; 12; DirOnly!; vDDirForm; "vDDirForm"; "")H o DirConfigLQorDirFormLQ[+LE[LE[LE[ LE[LIv VDDIRFORMLRo vDDirFormL NoL NB z'@G DialogAddGroupBox ("DirConfig"; "GB1"; 8; 30; 285; 145; "Form Files")Ho DirConfigLQ oGB1LQ[LE[LExLE[LEo Form FilesLNB|'@3 ForNext (p1; 1; 9)[ P1Y #(F5-FIRST)[ r #(F5-FIRST)( rP1-[c #(F5-STEP)r #(F5-STEP) rP1 P1Z #(F5-FIRST) rP1r #(F5-STEP)[2~-2/K p2 = NumStr(p1)H rP1L@B) P25 p3 = 15 * (p1 - 1)[ rP1[: P3h DialogAddText ("DirConfig"; "rForm" + p2; 13; 42 + p3; 50; 10; WPChars!+Left!; IOn + p2 + ":" + IOff)Ho DirConfigLQorForm rP2LQ[ LE[* rP3LE[2LE[ LE[ [LI rION rP2 o:rIOFFLQB'@άT DialogAddText ("DirConfig"; "S" + p2; 25; 42 + p3; 265; 10; Left!; vFileForm[p1])Ho DirConfigLQ oS rP2LQ[LE[* rP3LEx LE[ LE[LI rP1[S VFILEFORM[LQB'@r EndForq #(F5-FIRST) #(F5-STEP)O DialogAddPushButton ("DirConfig"; "bDone"; 89; 180; 50; 14; OKBttn!; "&Done")Ho DirConfigLQobDoneLQ[YLE[LE[2LE[LE[LIo&DoneLNB'@7X DialogAddPushButton ("DirConfig"; "rCancel"; 159; 180; 50; 14; CancelBttn!; "&Cancel")Ho DirConfigLQorCancelLQ[LE[LE[2LE[LE[LIo&CancelLNB'@? DialogShow ("DirConfig")Ho DirConfigLQB'@E DialogDestroy ("DirConfig")Ho DirConfigLQB'@> Return[|3 Label (ReadConfig@)] vFileForm = {"";""; ""; ""; ""; ""; ""; ""; ""; ""} // Clear form file names before readingoooooooooo[ P  VFILEFORMy7 vHandle = OpenFile (vPath + vFile; Read!; DenyNone!;)HrVPATHrVFILELV[LI[LIB'VHANDLEe*- p1 = 0 // Number of form file names read in[ P1 RepeatGܲ FileRead (vHandle; vString)HrVHANDLELEvVSTRINGLRB'@Bc If ((StrLeft (vString; 1) <> "'") & (ToUpper(StrLeft (vString; 3)) <> "REM")) // not a commentHrVSTRINGLQ[LUB) o';HHrVSTRINGLQ[LUB)LQB) oREM;cW If (StrLeft(vString; 17) = "Default Directory") //Default Directory definition LineHrVSTRINGLQ[LUB))oDefault Directory*{δ8 vDDirForm = StrRight(vString; StrLen(vString) - 18)HrVSTRINGLQHrVSTRINGLQB )[LUB) VDDIRFORM\G vDDirForm = StrtoChars (vDDirForm; Remove!; """") // Remove quotesHr VDDIRFORMLQ[LI o"L@B) VDDIRFORMY' If (StrRight(vDDirForm; 1) <> "\")Hr VDDIRFORMLQ[LUB) o\;}M! vDDirForm = vDDirForm + "\"r VDDIRFORM o\ VDDIRFORM EndIf}{ EndIfշG If (StrLeft(vString; 9) = "Form File") // Form File definition LineHrVSTRINGLQ[ LUB)o Form File*<+ p1 = p1 + 1 rP1[ P1< vFileForm[p1] = StrRight(vString; StrLen(vString) - 10) rP1[HrVSTRINGLQHrVSTRINGLQB )[ LUB) VFILEFORM[O vFileForm[p1] = StrtoChars (vFileForm[p1]; Remove!; """") // Remove quotes rP1[H rP1[S VFILEFORM[LQ[LI o"L@B) VFILEFORM[[ EndIf< EndIfcS$ Until ((vString = "") | (p1 = 10))rVSTRINGo* rP1[ *$5h CloseFile (vHandle)HrVHANDLELEB'@ Return[|5 Label (WriteConfig@)Q# If (DoesFileExist(vPath + vFile))HrVPATHrVFILELVBN'C FileDelete(vPath + vFile)HrVPATHrVFILELNEC EndIfq3 p1 = OpenFile (vPath + vFile; Write!; DenyNone!;)HrVPATHrVFILELV[LI[LIB' P1ZR FileWrite (p1; "' *** " + vFile + " Multiple Merge Configuration ***"; NewLine!)H rP1LEo' *** rVFILEIo! Multiple Merge Configuration ***LQ[LIB'@a FileWrite (p1; "' The following are the form files to be merged. The names of these"; NewLine!)H rP1LEoC' The following are the form files to be merged. The names of theseLQ[LIB'@wb FileWrite (p1; "' files must contain the full path; if none is supplied, the default"; NewLine!)H rP1LEoD' files must contain the full path; if none is supplied, the defaultLQ[LIB'@b FileWrite (p1; "' directory will be used. The number of merges depends on the number"; NewLine!)H rP1LEoD' directory will be used. The number of merges depends on the numberLQ[LIB'@i FileWrite (p1; "' of files listed. Formatting is essential: each form file must be preceded"; NewLine!)H rP1LEoK' of files listed. Formatting is essential: each form file must be precededLQ[LIB'@Ch FileWrite (p1; "' by ""Form File="" (no quotes). A blank line will abort the read process."; NewLine!)H rP1LEoH' by "Form File=" (no quotes). A blank line will abort the read process.LQ[LIB'@I FileWrite (p1; "'"; NewLine!)H rP1LE o'LQ[LIB'@4< FileWrite (p1; "Default Directory=" + vDDirForm; NewLine!)H rP1LE+oDefault Directory=r VDDIRFORMLQ[LIB'@ p2 = 0[ P2_* While ((vFileForm[p2]<> "") & (p2 < 10)) rP2[S VFILEFORM[o; rP2[ 2 'G p2 = p2 + 1 rP2[ P2}9 FileWrite (p1; "Form File=" + vFileForm[p2]; NewLine!)H rP1LEo Form File= rP2[S VFILEFORM[LQ[LIB'@ EndWhile+Q CloseFile (p1)H rP1LEB'@ p1 = 0[ P1 Return[|1 Label (EndVerify@)vJ If (ToUpper(vPath) = ToUpper(vDefaultPath)) // Remove path if the defaultHrVPATHLQB)Hr VDEFAULTPATHLQB)* # vPath = ""oVPATHS EndIf 9 Return (vPath + vFile)rVPATHrVFILE|! EndFunction[|5 !1  ENDVERIFY1cEDITDATA#1&@ EDITCONFIG1FIXNAME#1x READCONFIG#1z SETHOMEDIR%1. STARTCONFIG%1j STARTVERIFY%1 WRITECONFIG9 Label (SetDirectories@)7 vPath = ?PathDocumentHB VPATH_ DialogDefine ("SetDirs"; 50; 50; 245; 70; Percent!+NoCloseBox!; "Set Defaults for MultiMerge")HoSetDirsLQ[2LE[2LE[LE[FLE[xLI=oSet Defaults for MultiMergeLNB'@iL/ DialogSetProperties ("SetDirs"; vDirFont; 12p)HoSetDirsLQrVDIRFONTLN g(@LMB'@k DialogAddText ("SetDirs"; "S1"; 80; 5; 160; 10; WPChars!+Center!; BOn + "SET DEFAULT DIRECTORIES:" + BOff)HoSetDirsLQ oS1LQ[PLE[LE[LE[ LE[ [LI rBON7oSET DEFAULT DIRECTORIES:rBOFFLQB'@N[ DialogAddText ("SetDirs"; "S2"; 2; 18; 47; 10; WPChars!+Left!; IOn + "Form Files:" + IOff)HoSetDirsLQ oS2LQ[LE[LE[/LE[ LE[ [LI rIONo Form Files:rIOFFLQB'@_ DialogAddFileNameBox ("SetDirs"; "rDirForms"; 80; 15; 160; 14; DirOnly!; vDDirForm; vPath; "")H oSetDirsLQo rDirFormsLQ[PLE[LE[LE[LE[LIv VDDIRFORMLRrVPATHL NoL NB z'@\e DialogAddText ("SetDirs"; "S3"; 2; 33; 75; 10; WPChars!+Left!; IOn + "Merge Configurations:" + IOff)HoSetDirsLQ oS3LQ[LE[!LE[KLE[ LE[ [LI rION1oMerge Configurations:rIOFFLQB'@a DialogAddFileNameBox ("SetDirs"; "rDirConfig"; 80; 30; 160; 14; DirOnly!; vDirConfig; vPath; "")H oSetDirsLQo rDirConfigLQ[PLE[LE[LE[LE[LIv VDIRCONFIGLRrVPATHL NoL NB z'@vH DialogAddPushButton ("SetDirs"; "bOK"; 60; 50; 50; 14; OKBttn!; "&Set")HoSetDirsLQ obOKLQ[<LE[2LE[2LE[LE[LIo&SetLNB'@T DialogAddPushButton ("SetDirs"; "bCancel"; 125; 50; 50; 14; CancelBttn!; "&Cancel")HoSetDirsLQobCancelLQ[}LE[2LE[2LE[LE[LIo&CancelLNB'@9f DialogShow ("SetDirs")HoSetDirsLQB'@C vResult = MacroDialogResult)rMACRODIALOGRESULTVRESULT? DialogDestroy ("SetDirs")HoSetDirsLQB'@1 If (vResult = "2")rVRESULT o2*L QuitHE*} EndIfQ# If (StrRight(vDDirForm; 1) <> "\")Hr VDDIRFORMLQ[LUB) o\;E vDDirForm = vDDirForm + "\"r VDDIRFORM o\ VDDIRFORMD EndIfSp$ If (StrRight(vDirConfig; 1) <> "\")Hr VDIRCONFIGLQ[LUB) o\;WI vDirConfig = vDirConfig + "\"r VDIRCONFIG o\ VDIRCONFIG EndIfW7@ If (vDirConfig = "\")r VDIRCONFIG o\*H 3 vDirConfig = vPathrVPATH VDIRCONFIG EndIfH 5 If (vDDirForm = "\")r VDDIRFORM o\*1!1< vDDirForm = vPathrVPATH VDDIRFORMz EndIf1!< RegistrySetValue (vRegKey; "vDDirForm"; vDDirForm; String!)HrVREGKEYLIo vDDirFormLNr VDDIRFORML@[LIB;*@> RegistrySetValue (vRegKey; "vDirConfig"; vDirConfig; String!)HrVREGKEYLIo vDirConfigLNr VDIRCONFIGL@[LIB;*@Cz If (DoesDialogExist("Run"))H oRunLQB'$P DialogControlUpdate ("Run"; "S4"; IOn + """" + vDirConfig + """" + ")" + IOff)H oRunLQ oS4LQ rION o"r VDIRCONFIG o" o)rIOFFL@B'@7 EndIf$cReturn[|[)51>hCONTINUE+1_a>CHECKDIRECTORY1lDCALLRUN1lEND+1 SETDIRECTORIES'13 UPDATEVALUES+1ۅFVERIFYN!OEN WordPerfect!OEN WordPerfect)OENPSMacroFacility/OENPSMacroInterpreterfVerify(3'$  !  ( $ Figure  1  )!dxdx_,=XXdd=m#4` <hDp Lx !(#T$%&')0*X     % k //H&H&Q&|  //0  MACRO:04&&0` 4&4& MultiMerge.wcmH&H&Q&` &` &| r 0  vVersion=0` && "3.31"`` &` &   vDate= 4  `  "June16,2007" N //0  DESCRIPTION: Mergesmultipleformfiles,readsandwritesconfigdatafrom/tofileH&H&Q&&&| < //0  AUTHOR:04&& ` 0 4&4&20052007MichaelA.Koenecke(mkoenecke@alum.haverford.edu)H&H&Q& & &| * //H&H&Q&| Ԉ    :./*     Version3.0addssupportformergingallthedocuments,eveniftherearetoomanydocumentsopen  p already,andwillsavethemergeresultstothespecifieddirectory.Italsoconvertstheproceduretoone  ^  basedoncallbacks,whichisfasterandmoreelegant.Themacroisnormallyintendedtobeusedwitha  L  parameter;i.e.,runitwiththenameofthedesiredconfigurationfileafterit,separatedbyaspace.The  :  macrowillaskforthedatafiletouse.Themacrowillwriteitsownconfigurationfiles,usingthevalues (  youenterinitsdialogs.Version3.2addstheoptiontocreateformfilesfromformfiles(.FRM).   Version3.3addstheoptiontocombineresultingfilesintoone.   YOUDONOTHAVETOEDITTHISMACRO;CONFIGUREITBYRUNNINGIT. v  */  d Application(WordPerfect;"WordPerfect";Default!;"EN") > OnCancel(4=_O  5  End@6O  7_ ) * Global0  (vFileForm={"";"";"";"";"";"";"";"";"";""};vName=".,;MultiMerge.wcm,MultiMerge.wcm/  "".wcm";vDescrip="a  WordPerfectmacrotomergemultiplefileswithasingledatasource,readingandwritingitsown ~ configurationfiles.";vDDirForm;vDirConfig;vFileConfig;vFileData;vMissing;vDirFont;BOn= j NToC(65048);BOff=NToC(65049);IOn=NToC(jXXXgX65040#gXXXjXb #);IOff=NToC(jXXXgX65041#gXXXjX #))V&&  Global(vExtForm="frm";vExtData="dat") B vMissing="" 0 vDirFont="Verdana"  #  vDestination=""   vFileData=vMissing | vFileConfig=vMissing h If(Dimensions(MacroArgs[];0)>0) T   vFileConfig=MacroArgs[1] @  EndIf ,!  vRegKey=RegistryCreateKey(CurrentUser!;"Software\Corel\WordPerfect\MacroData") "! If((RegistryQueryValue(vRegKey;"vDDirForm")=0)|(RegistryQueryValue(vRegKey;"vDDirForm")="")) #"   Call(46_JO  5  SetDirectories@6 O  7_ L) #l # Else $X!$ 0  vDDirForm=RegistryQueryValue(vRegKey;"vDDirForm")%D"%&& 0  vDirConfig=RegistryQueryValue(vRegKey;"vDirConfig")&0#&&& EndIf '$'  //  Thefollowinglineisfortestingpurposes,bypassingdialogs.  x)%) //  Go(4i_O  5  ContinueTest@6]Oq  7_ ) f*&* ',<,,' //  Define"About"Dialog  >,(, DialogDefine("About";50;50;175;125;Percent!;"About"+vName) ,-)- DialogSetProperties("About";vDirFont;11p)  DialogAddText("About";"S1";5;5;165;25;WPChars!+Left!;BOn+vName+BOff+":"+vDescrip) p DialogAddText("About";"S2";5;30;30;10;WPChars!+Left!;IOn+"Version:"+IOff) \ DialogAddText("About";"S3";60;31;36;10;Left!;vVersion) H DialogAddText("About";"S4";5;40;30;10;WPChars!+Left!;IOn+"Date:"+IOff) 4 DialogAddText("About";"S5";60;40;65;10;Left!;vDate)   DialogAddText("About";"S6";5;50;55;10;WPChars!+Left!;IOn+"Copyright2005"+IOff)   DialogAddText("About";"S7";60;50;75;10;WPChars!+Left!;BOn+"MichaelA.Koenecke"+BOff)  t DialogAddText("About";"S5";60;58;120;10;WPChars!+Left!;BOn+"http://macros.koenecke.us"+BOff)  ` DialogAddText("About";"S8";6;75;165;25;WPChars!+Left!;IOn+"Licensed"+IOff+"underCreative  L  CommonsAttribution-NonCommercial2.0License:http://creativecommons.org/licenses/by-nc/2.0/")  8  DialogAddPushButton("About";"OKBttn";60;105;50;14;OKBttn!;"OK")  $   //  Define"Run"Dialog    DialogDefine("Run";50;50;260;125;Percent!+NoCloseBox!;"Run"+vName) n  DialogSetProperties("Run";vDirFont;12p) Z  DialogAddText("Run";"S1";6;5;130;10;WPChars!+Left!;BOn+"CONFIGURATIONFILETOUSE:"+BOff) F DialogAddFileNameBox("Run";"rFileConfig";5;15;225;12;0;vFileConfig;vDirConfig;"*.mmg") 2 DialogAddPushButton("Run";"bEditConfig";235;15;20;12;0;"Edit")  DialogAddText("Run";"S3";15;30;220;10;WPChars!+Left!;IOn+"(Ifnolocationisspecified,itwillassume   itcanbefoundin"+IOff) r DialogAddText("Run";"S4";15;39;215;10;WPChars!+Left!;IOn+""""+vDirConfig+""""+")"+IOff) ^ DialogAddText("Run";"S5";6;50;119;10;WPChars!+Left!;BOn+"DATAFILE:"+BOff) J DialogAddFileNameBox("Run";"rFileData";5;60;225;12;0;vFileData;vDDirForm;"*."+vExtData) 6 DialogAddPushButton("Run";"bEditData";234;60;20;12;0;"Edit") " DialogAddText("Run";"S6";6;78;119;10;WPChars!+Left!;BOn+"MERGEDFILESDESTINATION:"+BOff)  DialogAddFileNameBox("Run";"rDestination";6;88;225;12;DirOnly!;vDestination;?PathDocument;"") ~ DialogAddPushButton("Run";"bRun";65;105;50;14;OKBttn!;"&Run") j DialogAddPushButton("Run";"bCancel";125;105;50;14;CancelBttn!;"&Cancel") V DialogAddPushButton("Run";"bReset";210;105;45;14;0;ButtonText:"Set&Defaults") B DialogAddPushButton("Run";"bAbout";6;105;34;14;0;ButtonText:"About...") . DialogAddCheckBox("Run";"rCombine";150;77;80;10;"CombinetoOneFile:";vCombine;   CheckboxAuto!+TextOnLeft!) !  DialogShow("Run";"WordPerfect";4N_O  5  dCallRun6O  7_\) #F # vResult=MacroDialogResult $2!$  CallBackWait  %"% If(StrScan(vFileData;1;EqualTo!;"\")=0)  //Ifnopathfordatafile,adddefault  & #&   vFileData=vDDirForm+vFileData ~'#' EndIf j($( //  Label(% l ContinueTest@%l!)! B*&* //  vDDirForm="C:\Data\Documents\Estates\POA\" .+'+ //  vFileForm[1]="DirectivetoPhysicians.frm" ,(, //  vFileForm[2]="C:\Data\Documents\Estates\Wills\Will.frm" -)- //  vFileData="c:\Data\Documents\Clients\Test\ClientDataSheet.dat"  Label(%  CheckDirectory@%#)# \ If(vDestination="") H   If(DoesFileExist(vFileData))  //  Ifunspecifieddestination+datafile,setthereasdefault  4     vDestination=SubStr(vFileData;1;StrScan(vFileData;1;EqualTo!;"\")) "   EndIf   Else  v   If(DoesDirectoryExist(vDestination))  //Makesurethedestinationdirectoryexists   b 0    If(StrRight(vDestination;1)<>"\") P && 0      vDestination=vDestination+"\" < && 0    EndIf ( &&   Else       vString=BOn+""""+vDestination+"""isnotavaliddirectory."+BOff   0  0&&DialogDefine("NoDir";50;50;200;75;Percent!+NoCloseBox!;"DirectoryNotFound")p && 0  0&&DialogSetProperties("NoDir";vDirFont;11p)\ && 0  0&&DialogAddText("NoDir";"S1";30;5;134;22;WPChars!+Center!;vString)H&& 0  0&&DialogAddFileNameBox("NoDir";"rDirectory";12;31;172;14;DirOnly!;vDestination;vDirData;"")4&& 0  0&&DialogAddPushButton("NoDir";"rRespecify";20;51;50;14;OKBttn!;"Respecify") && 0  0&&DialogAddPushButton("NoDir";"bSkip";75;51;50;14;0;"Skip") && 0  0&&DialogAddPushButton("NoDir";"rCancel";129;51;50;14;CancelBttn!;"CancelMerge")t&& 0  0&&DialogShow("NoDir")`&&     vResult:=MacroDialogResult L     DialogDestroy("NoDir") 8     Switch(vResult)  $       CaseOf"2":     Quit        CaseOf"bSkip":   vDestination=vMissing        Default:     Go(4?_`O  5  CheckDirectory@64.OH.tton  7shv.) n     EndSwitch  Z   EndIf H EndIf 4 vHow:=MergeRun.DataFileType.DataFile!  //Mergefromadatafile,unlessitisblank.    If(NOTDoesFileExist(vFileData))  //Ifnodatafileentered...  !    MessageBox(;"Error!";"Nodatafilefound.Mergeresultswillbeblank.")  //warning  !x!   vHow:=MergeRun.DataFileType.NoData!       D  p //andmergewithnodata.  "d" EndIf #P # vMergesDone=0 $1)and(vCombine))  //Ifcombinetosingledocument,mergetosamedocument  x&& 0  0&&  vTo:=MergeRun.OutputFileType.ToCurrentDoc! f&&       HardPageBreak()  R  0  0&&EndIf > &&  //  vFileTest=DoesFileExist(vFileForm[p1])   //  Step(On!)   //  Step(Off!)  r    0  MergeRun(FormFile!;vFileForm[p1];vHow;vFileData;vTo)J&&     If((vDestination<>vMissing)AND(vCombine=0)) p //Ifthere'sadestination,saveresultingfile  6       vExtension=".wpd" $       PosDocTop()        SearchString(">  [AllMergeCodes]?  ") x       NotFound(Off!) d       SearchNext(Extended!) P       If(NOT?NotFound) <        4 vExtension=".frm" (       EndIf        SelectOff()        vFile=StrLeft(vFileForm[p1];StrLen(vFileForm[p1])4)+vExtension p       p2=StrScan(vFileForm[p1];1;EqualTo!;"\") \       vFile=StrRight(vFile;StrLen(vFile)p2) H       OnCancel(4c#&~ O  5  Continue@6?O?   7#&4?) 4       FileSave(vDestination+vFile;;Prompt!)         Label(%  Continue@%A)@   !        OnCancel(4h#&~ O  5  End@6AOA   7#&~ A) !v!     EndIf "b"     vMergesDone=vMergesDone+1 #N #   EndIf $:!$   p1=p1+1 %&"%  Until(vFileForm[p1]="")  &#& If(NOTvMergesDone) '$' 0  MessageBox(;"Error!";"Nomergesweredone.Nocombinationofavalidformfileandavaliddatafile p($( existed.")\)%)&& EndIf H*&* Label(%  End@%vD)_D  ,(,  Quit   -)- ЇLabel(% m dCallRun%mD)D    Switch(dCallRun[3])  p     CaseOf"bAbout":    DialogShow("About") ^     CaseOf"bCancel":    Quit J     CaseOf"bEditConfig":  Call(4>_O  5  UpdateValues@6FOF   7F) 6        4  `      vFileConfig=4 O  5  fVerify6GO H //  7 7H(vFileConfig;vDirConfig;"Edit";"mmg") "        4  `      DialogControlUpdate("Run";"rFileConfig";vFileConfig)       CaseOf"bEditData":   Call(4F_O  5  UpdateValues@6IOI   7(J)  v        4  `      DialogDismiss("Run";"bRun")  b        4  `      vFileData=4Z O  5  fVerify6KOK //  7 ,L(vFileData;vDDirForm;"Edit";vExtData)  N         4  `      DialogShow("Run";"WordPerfect";4L_BO  5  dCallRun6;MOOM0+'  7 }M)  :      CaseOf"bReset":    Call(44ԪO  5  SetDirectories@6VNOjN  7N)  &      CaseOf"bRun":    Call(4O_O  5  UpdateValues@6vOOO   7O)          4  `  0 0 & &0 & &vFileConfig=4M O  5  fVerify6POP //  7  Q(vFileConfig;vDirConfig;"Check";"mmg") &&        4  `  0 0 & &0 & &vFileData=45+O  5  fVerify6DROXR  7,R(vFileData;vDDirForm;"Check";vExtData)n &&        4  `      p2="" Z         4  `  0 0 & &0 & & ForNext(p1;1;9)  //  Checkformfilesbeforerunningmerges F&&        4  `  0 0 & &0 & &  If(vFileForm[p1]<>"")4&&        4  `         < vString=vFileForm[p1]          4  `  0 0 & &0 & &   < vFileForm[p1]=4psiO  5  fVerify6VOV,ad  7siW(vFileForm[p1];vDDirForm;"Check";vExtForm) &&        4  `         < If(vString<>vFileForm[p1]) t        4  `         <  h p2="Respecified" p //0  Ifrespecifiedform,rewriteconfigfile `&&        4  `         < EndIf N        4  `  0 0 & &0 & &  EndIf:&&        4  `      EndFor  &        4  `      If(p2="Respecified")         4  `   0 0 & &0&&vFileConfig=48 O  5  fVerify6\O\ //  7 \(vFileConfig;vDirConfig;"Write";"mmg")&&        4  `      EndIf p        4  `      DialogDestroy("Run") \        4  `      CallBackResume  H   EndSwitch  6 Return_ $  Label(% I UpdateValues@%I_)_ !x!   vFileConfig=RegionGetWindowText("Run.rFileConfig") "d"   vFileData=RegionGetWindowText("Run.rFileData") #P #   vDestination=RegionGetWindowText("Run.rDestination") $vMissing)&(vFile<>"")&(ToLower(StrRight(vFile;4))<>"."+vType)) H&& 0  0&&0&&vFile=vFile+"."+vType h //Addextension 4&& 0  0&&EndIf"&& 0    vPath=vDefaultPath && 0  0&&p1=StrScan(vFile;1;EqualTo!;"\") v&& 0    If(p1>0) ` //Separatethefilenameandthepath  b&& 0      vPath=SubStr(vFile;1;p1) P &&       If(StrPos(vPath;":")=0)  <         4 vPath=vDefaultPath+vPath  (        EndIf   0      vFile=SubStr(vFile;p1+1;StrLen(vFile)p1) && 0    EndIfp &&   Return  \  ' ,,<,'0  Label% 2 (EditConfig@)%2~4&&     If(NOTDoesFileExist(vPath+vFile))   0      vFileForm={"";"";"";"";"";"";"";"";"";""}  // D Clearformfilenames  && 0    EndIfv&& 0    If(vDDirForm="")b&&       vDDirForm=?PathDocument N 0    EndIf:&&     vString=""""+vFile+"""MultiMerge" &     Label% ] (StartConfig@)%]  0  0&&  If(StrRight(vDDirForm;1)<>"\")&& 0  0&&   4 vDDirForm=vDDirForm+"\"n&&   0    EndIfZ&& 0  0&&0&&DialogDefine("EditConfig";50;50;300;200;Percent!+NoCloseBox!;"Configurationof"+vString)F&& 0  0&&0&&DialogSetProperties("EditConfig";vDirFont;10p)2&&     0  DialogAddText("EditConfig";"S1";45;5;200;10;WPChars!+Left!;IOn+"DefaultDirectoryfor"""   +vFile+"""FormFiles:"+IOff) ! &&       p1=vDDirForm !r!       If(StrLen(vDDirForm)>70) "^"        4 p1=StrLeft(vDDirForm;3)+"..."+StrRight(vDDirForm;65) #J #       EndIf $6!$     0  DialogAddText("EditConfig";"S2";45;15;245;10;WPChars!+Left!+Filename!;p1)%""%&&       DialogAddPushButton("EditConfig";"bChange";8;13;30;14;0;"Change") &#&       DialogAddGroupBox("EditConfig";"GB1";8;30;285;145;"FormFiles") ~'#' 0  0&&0&& 4 ForNext(p1;1;9) j($(&&        4 p2=NumStr(p1) X)%) 0  0&&0&& 4  ` p3=15*(p11)D*&*&& 0  0&&0&&04&&0` 4&4&DialogAddText("EditConfig";"rForm"+p2;13;42+p3;50;10;WPChars!+Left!;IOn+p2 0+'+ +":"+IOff),(,` &` & 0  0&&0&&04&&0` 4&4&DialogAddFileNameBox("EditConfig";"rF"+p2;23;40+p3;265;12;0;vFileForm[p1]; -)- vDDirForm;"*."+vExtForm)` &` & 0  0&&  EndFor p&&     DialogAddPushButton("EditConfig";"bDone";89;180;50;14;OKBttn!;"&Done") ^     DialogAddPushButton("EditConfig";"rCancel";159;180;50;14;CancelBttn!;"&Cancel") J 0  0&&DialogShow("EditConfig"4E O  5  6O")  7si D)6&&     vResult=MacroDialogResult "     DialogDestroy("EditConfig"4aO  5  6BOV")  7si)       If(vResult="bChange")  v       Call(4G O  5  SetHomeDir@6rOEl  7 R )  b       Go(4` XO  5  StartConfig@6`Ot0  7 )  N      EndIf  :  0    If(vResult="1") & && 0  0&&  ForNext(p1;1;9)  && 0  0&&   4 If(vFileForm[p1]="") h //  Eliminateblanksinthemiddleandmovefilesup.  && 0  0&&   4  ` ForNext(p2;p1;9) r && 0  0&&   4  `  If(vFileForm[p2]<>"")` && 0  0&&   4  `   vFileForm[p1]=vFileForm[p2]L&& 0  0&&   4  `   vFileForm[p2]=""8&& 0  0&&   4  `   p2=9$&& 0  0&&   4  `  EndIf&& 0  0&&   4  ` EndFor x&& 0       4 EndIff&&        4 If(ToUpper(StrLeft(vFileForm[p1];StrLen(vDDirForm)))=ToUpper(vDDirForm)) R        4 0 ` vFileForm[p1]=StrRight(vFileForm[p1];StrLen(vFileForm[p1])StrLen(vDDirForm))>` &` &        4 EndIf * 0  0&&  EndFor && 0      If(vFileForm[1]<>"")&&   0     4 Call(4f O  5  WriteConfig@6ROfditC  7(|)t&& 0  0&&  EndIf`&& 0    EndIfL&& 0  Returnǝ8&& 0  Label(% A EditData@%A4)! && 0      FileOpen(vPath+vFile)!x!&& 0      InhibitInput(Off!)"d"&& 0  0&&0&&DialogDefine("EditData";0;50;65;100;Modeless!+Sizeable!+Percent!+NoCloseBox!;"EditData #P # File")$"'")&(ToUpper(StrLeft(vString;3))<>"REM")) //notacomment ^)%)&& 0  0&&   4 If(StrLeft(vString;17)="DefaultDirectory") 0p&&//DefaultDirectorydefinitionLine L*&*p&p& 0       4  ` vDDirForm=StrRight(vString;StrLen(vString)18):+'+&& 0       4  ` vDDirForm=StrtoChars(vDDirForm;Remove!;"""")   //Removequotes &,(,&& 0       4  ` If(StrRight(vDDirForm;1)<>"\")-)-&& 0       4  `  vDDirForm=vDDirForm+"\"&& 0       4  ` EndIfp&& 0       4 EndIf\&& 0  0&&   4 If(StrLeft(vString;9)="FormFile") 0&&//  FormFiledefinitionLine H&& 0       4  ` p1=p1+16&& 0  0&&   4  ` vFileForm[p1]=StrRight(vString;StrLen(vString)10)"&& 0       4  ` vFileForm[p1]=StrtoChars(vFileForm[p1];Remove!;"""")   //Removequotes  && 0  0&&   4 EndIf x&& 0  0&&  EndIf d&&     Until((vString="")|(p1=10))   P  0    CloseFile(vHandle) > && 0  Return * && 0  Label(% d WriteConfig@%d+) && 0    If(DoesFileExist(vPath+vFile))r && 0      FileDelete(vPath+vFile)^ && 0    EndIfJ&& 0    p1=OpenFile(vPath+vFile;Write!;DenyNone!;)6&&  //Note:ifthereissomethingwrongwiththepath,nofilewillbewritten!  " 0    FileWrite(p1;"'***"+vFile+"MultipleMergeConfiguration***";NewLine!)&& 0    FileWrite(p1;"'Thefollowingaretheformfilestobemerged.Thenamesofthese";NewLine!)x&& 0    FileWrite(p1;"'filesmustcontainthefullpath;ifnoneissupplied,thedefault";NewLine!)d&& 0    FileWrite(p1;"'directorywillbeused.Thenumberofmergesdependsonthenumber";NewLine!)P&& 0    FileWrite(p1;"'offileslisted.Formattingisessential:eachformfilemustbepreceded";NewLine!)<&& 0    FileWrite(p1;"'by""FormFile=""(noquotes).Ablanklinewillabortthereadprocess.";NewLine!)(&& 0    FileWrite(p1;"'";NewLine!)&& 0    FileWrite(p1;"DefaultDirectory="+vDDirForm;NewLine!)&& 0    p2=0p&& 0    While((vFileForm[p2]<>"")&(p2<10)) \&& 0      p2=p2+1J&& 0  0&&  FileWrite(p1;"FormFile="+vFileForm[p2];NewLine!)6&&     EndWhile  "  0    CloseFile(p1)! &&     p1=0 !x!   Return "d"   Label(%  EndVerify@%8) $"\")X &&     vDDirForm=vDDirForm+"\" D   EndIf 0 0  If(StrRight(vDirConfig;1)<>"\")&&     vDirConfig=vDirConfig+"\"    EndIf p 0  If(vDirConfig="\")\&&     vDirConfig=vPath H   EndIf 4 0  If(vDDirForm="\") &&     vDDirForm=vPath     EndIf | 0  RegistrySetValue(vRegKey;"vDDirForm";vDDirForm;String!)h&& 0  RegistrySetValue(vRegKey;"vDirConfig";vDirConfig;String!)T&&   If(DoesDialogExist("Run")) @     DialogControlUpdate("Run";"S4";IOn+""""+vDirConfig+""""+")"+IOff) ,   EndIf   Returnc