MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

compare three files and write out matching records based on
Goto page 1, 2  Next
 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities
View previous topic :: View next topic  
Author Message
vak255
Intermediate


Joined: 10 Sep 2004
Posts: 384
Topics: 79

PostPosted: Thu Aug 23, 2007 11:53 am    Post subject: compare three files and write out matching records based on Reply with quote

I have three files FA, FB and FC. All are Fixed Block with LRECL = 260
Every record in FA is prefixed(position 1-3) by 500 and every record in FB by 600 and every record in FC by 700.
Also FA, FB, FC have one header and one trailer each.
The FA(500 records) have unique account numbers starting from 16 and with length 13.

For Every account in FA there will be one or more 600 records and MAY be one or more 700 records.
The rule is Every account in FA should have atleast one 600 record in FB and 700 record is optional .
For an account, No 600 or 700 record can exist without 500 record. 500 record is like a parent and 600 and 700 are child.
Also, No 700 record can exist without 500 record.

For the above requirement. I decided to follow the below three steps.
1)Check whether the accounts in FA with 500 record has atleast one 600 records.
IF not write the 500 record accounts to ERR file say Err-FA and the accounts that has matching 600 records to another file say New-FA.
2)Check Whether the accounts in FB with 600 records has 500 records(there may be child without parent). IF not write the 600 record accounts to ERR file say Err-FB and the accounts that has matching 500 record to another file say New-FB.
3)Check Whether the accounts in FC with 700 records has 500 records in the New-FA. IF not write the 700 record accounts to ERR file say Err-FC and the accounts that has matching accounts to another file say New-FC

If anyone knows better way to do it, Please let me know your views.
Code:

FA:
HH9001200708221027
5002007072929ST2142192760155
5002007072929ST2142195168586
5002007072929ST2142198130614   
5002007072929ST2142209977374   
5002007072929ST2142210123035
TT9001200708221027

FB:
HH9001200708221027
6002007072929ST2142192760155
6002007072929ST2142192760155
6002007072929ST2142195161111
6002007072929ST2142195161111
6002007072929ST2142195161111
6002007072929ST2142195161111
6002007072929ST2142195161111
6002007072929ST2142198131111
6002007072929ST2142198131111
6002007072929ST2142198130614
6002007072929ST2142198130614
6002007072929ST2142198130614
6002007072929ST2142198130614
TT9001200708221027

FC:
HH9001200708221027
7002007072929ST2142192760155
7002007072929ST2142192760155
7002007072929ST2142195168586
7002007072929ST2142195168586
7002007072929ST2142195168586
7002007072929ST2142195168586
7002007072929ST2142195168586
7002007072929ST2142195168586
7002007072929ST2142275754799
TT9001200708221027
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12380
Topics: 75
Location: San Jose

PostPosted: Thu Aug 23, 2007 7:04 pm    Post subject: Reply with quote

vak255,


There is an easier way to check existence in all the files.

1. concatenate all the 3 files together and then omit the header and trailer records and sort on the account number. Using IFTHEN put a sequence number to the records considering the file-indicator and account number as key.

ex: take the key 2142192760155 from your sample data.It is present in all the 3 files.(600 & 700 have dups)

Code:

id   acct-num      seqno
=== =============  =====
500 2142192760155  00001
600 2142192760155  00001
600 2142192760155  00002
700 2142192760155  00001
700 2142192760155  00002

2. Take only records where the sequence number is just 1. By doing this you will select each unique account number with file id

The output will be as follows
Code:

id   acct-num      seqno
=== =============  =====
500 2142192760155  00001
600 2142192760155  00001
700 2142192760155  00001



3. Take the output from step 2 and sort on the account number and sum the file-indicator value.By doing so we will get the desired records

1. If the account number is present in all the 3 files then total values will be 1800(500+600+700)
2. If the account is only present in FA file then total is only 500.
3. If the account is only present in FB file then total is only 600.
4. If the account is only present in FC file then total is only 700.
5. If the account is present in both FA & FB then total is only 1100.
6. If the account is present in both FA & FC then total is only 1200.
7. If the account is present in both FB & FC then total is only 1300.

we can use the total to extract the records.

Here is the JCl for that.

Code:

//STEP0100 EXEC PGM=SORT
//SYSOUT   DD SYSOUT=* 
//SORTIN   DD DSN=YOUR FA FILE,
//            DISP=SHR
//         DD DSN=YOUR FB FILE,
//            DISP=SHR
//         DD DSN=YOUR FC FILE,
//            DISP=SHR
//SORTOUT  DD DSN=&T1,DISP=(,PASS),SPACE=(CYL,(X,Y),RLSE)
//SYSIN    DD *                                 
  INCLUDE COND=(1,3,SS,EQ,C'500,600,700')
 
    INREC IFTHEN=(WHEN=INIT,                       
         OVERLAY=(261:01,03,16,13))

    SORT FIELDS=(16,13,CH,A)

  OUTREC IFTHEN=(WHEN=INIT,                       
       OVERLAY=(275:SEQNUM,8,ZD,RESTART=(261,13)))

  OUTFIL INCLUDE=(275,8,ZD,EQ,1),                 
  OUTREC=(16,13,X,C'0',1,3)                       
/*                                               
//STEP0200 EXEC PGM=SORT
//SYSOUT   DD SYSOUT=* 
//SORTIN   DD DSN=&T1,
//            DISP=SHR 
//NOCHILD  DD SYSOUT=* 
//NOPARNT  DD SYSOUT=* 
//ALLTHREE DD SYSOUT=* 
//SYSIN    DD *         
  SORT FIELDS=(01,13,CH,A)                       

  SUM FIELDS=(15,4,ZD)                           
 
  OUTFIL FNAMES=NOCHILD,INCLUDE=(15,4,ZD,EQ,500) 
 
  OUTFIL FNAMES=ALLTHREE,INCLUDE=(15,4,ZD,EQ,1800)
 
  OUTFIL FNAMES=NOPARNT,                         
  INCLUDE=(15,4,ZD,EQ,600,OR,                     
           15,4,ZD,EQ,700,OR,                     
           15,4,ZD,EQ,1300)                       
/*


Hope this helps...

Cheers

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
s_shivaraj
Beginner


Joined: 21 Sep 2004
Posts: 140
Topics: 14
Location: Chennai, India

PostPosted: Thu Aug 23, 2007 7:50 pm    Post subject: Reply with quote

Using ICETOOL,

Just changed a Logic which i took from this forum, to this requirement.

Code:
//STEP0100 EXEC PGM=ICETOOL                                   
//*                                                           
//TOOLMSG   DD SYSOUT=*                                       
//DFSMSG    DD SYSOUT=*                                       
//IN1       DD *                                               
//IN2       DD *                                               
//IN3       DD *                                               
//T1        DD DSN=&T1,SPACE=(CYL,(5,5),RLSE),DISP=(,PASS)     
//T2        DD DSN=&T2,SPACE=(CYL,(5,5),RLSE),DISP=(,PASS)     
//T3        DD DSN=&T2,SPACE=(CYL,(5,5),RLSE),DISP=(,PASS)     
//INT       DD DSN=*.T1,DISP=(OLD,PASS),VOL=REF=*.T1           
//          DD DSN=*.T2,DISP=(OLD,PASS),VOL=REF=*.T2           
//          DD DSN=*.T3,DISP=(OLD,PASS),VOL=REF=*.T3           
//FILEA     DD SYSOUT=*                                       
//FILEB     DD SYSOUT=*                                       
//FILEC     DD SYSOUT=*                                       
//FILEAB     DD SYSOUT=*                                       
//FILEAC     DD SYSOUT=*                                       
//FILEBC     DD SYSOUT=*                                       
//OUT       DD SYSOUT=*                                       
//TOOLIN    DD   *                                             
  COPY FROM(IN1) USING(CTL1)                                   
  COPY FROM(IN2) USING(CTL2)                                   
  COPY FROM(IN3) USING(CTL3)                                   
  SORT FROM(INT) USING(CTL4) 
//CTL1CNTL  DD *                                               
   OUTFIL FNAMES=T1,INCLUDE=(01,3,CH,EQ,c'500'),OUTREC=(1,260,C'1')
//CTL2CNTL  DD   *                                             
   OUTFIL FNAMES=T2,INCLUDE=(01,3,CH,EQ,c'600'),OUTREC=(1,260,C'2')
//CTL3CNTL  DD   *                                             
   OUTFIL FNAMES=T2,INCLUDE=(01,3,CH,EQ,c'700'),OUTREC=(1,260,C'5')
//CTL4CNTL  DD   *                                             
  OPTION EQUALS
  SORT FIELDS=(16,13,CH,A)                                       
  SUM FIELDS=(261,1,ZD)                                         
  OUTFIL FNAMES=OUT,INCLUDE=(261,1,ZD,EQ,8),OUTREC=(1,80)       
  OUTFIL FNAMES=FILEA,INCLUDE=(261,1,CH,EQ,C'1'),OUTREC=(1,260)   
  OUTFIL FNAMES=FILEB,INCLUDE=(261,1,CH,EQ,C'2'),OUTREC=(1,260)       
  OUTFIL FNAMES=FILEC,INCLUDE=(261,1,CH,EQ,C'5'),OUTREC=(1,260)       
  OUTFIL FNAMES=FILEAB,INCLUDE=(261,1,CH,EQ,C'3'),OUTREC=(1,260)       
  OUTFIL FNAMES=FILEAC,INCLUDE=(261,1,CH,EQ,C'6'),OUTREC=(1,260)       
  OUTFIL FNAMES=FILEBC,INCLUDE=(261,1,CH,EQ,C'7'),OUTREC=(1,260)


Edited by kolusu to merge the 2 posts by s_shivaraj
_________________
Cheers
Sivaraj S

'Technical Skill is the Master of complexity, while Creativity is the Master of Simplicity'
Back to top
View user's profile Send private message AIM Address
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12380
Topics: 75
Location: San Jose

PostPosted: Thu Aug 23, 2007 8:20 pm    Post subject: Reply with quote

s_shivaraj,

hmm did you forget the fact that FB & FC files can have duplicate records? If there are duplicates then your totals would be off as you are totalling on only 1 byte.

ex: 1 500 record and 3 600 records and 1 700 record would yield a total of (1+6+5) = 12 and you are only considering 1 byte which would result in sum overflow.

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
s_shivaraj
Beginner


Joined: 21 Sep 2004
Posts: 140
Topics: 14
Location: Chennai, India

PostPosted: Thu Aug 23, 2007 10:06 pm    Post subject: Reply with quote

oops .. Sorry Kolusu missed that Fact.. Thanks for pointing
_________________
Cheers
Sivaraj S

'Technical Skill is the Master of complexity, while Creativity is the Master of Simplicity'
Back to top
View user's profile Send private message AIM Address
vak255
Intermediate


Joined: 10 Sep 2004
Posts: 384
Topics: 79

PostPosted: Fri Aug 24, 2007 9:55 am    Post subject: Reply with quote

Kolusu, Thats great. I really appreciate all the time you put in in helping out all of us.

I think I have not said it clearly what i am really looking for. Sorry for all the confusion, 500 and 600 and 700 records are not the total number of records, they are the record identification number you can see all records in FA starts with 500 and Fb - 600 and FC - 700.

I don't want to filter the duplicate accounts. All i want to filter is the parent(500) without 600(700 is optional) and childs(600,700) without parent.

The desired out put i am looking for is,
FA:
Code:


HH9001200708221027
5002007072929ST2142192760155  <- should goto New-FA
5002007072929ST2142195168586  <- should goto Err-FA  (No 600-child though it has 700)
5002007072929ST2142198130614  <- should goto New-FA 
5002007072929ST2142209977374  <- should goto Err-FA  (No 600)
5002007072929ST2142210123035  <- should goto Err-FA  (No 600)
TT9001200708221027

FB:
Code:

HH9001200708221027
6002007072929ST2142192760155  <- should goto New-FB
6002007072929ST2142192760155  <- should goto New-FB
6002007072929ST2142195161111  <- should goto err-FB (No parent -500)
6002007072929ST2142195161111  <- should goto err-FB
6002007072929ST2142195161111  <- should goto err-FB
6002007072929ST2142198130614  <- should goto New-FB
6002007072929ST2142198130614  <- should goto New-FB
6002007072929ST2142198130614  <- should goto New-FB
TT9001200708221027

FC: (should be compared with New-FA)
Code:

HH9001200708221027
7002007072929ST2142192760155   <- should goto New-FC
7002007072929ST2142192760155   <- should goto New-FC
7002007072929ST2142195168586   <- should goto Err-FC
7002007072929ST2142195168586   <- should goto Err-FC
7002007072929ST2142275754799   <- should goto Err-FC
TT9001200708221027

New-FA:
Code:

5002007072929ST2142192760155 
5002007072929ST2142198130614 

New-FB:
Code:

6002007072929ST2142192760155 
6002007072929ST2142192760155 
6002007072929ST2142198130614 
6002007072929ST2142198130614 
6002007072929ST2142198130614 

New-FC:
Code:

7002007072929ST2142192760155   
7002007072929ST2142192760155   

Merged one:(sorted on acct number 16,13 and 1,3
Code:

5002007072929ST2142192760155
6002007072929ST2142192760155
6002007072929ST2142192760155
7002007072929ST2142192760155   
7002007072929ST2142192760155
5002007072929ST2142198130614
6002007072929ST2142198130614 
6002007072929ST2142198130614 
6002007072929ST2142198130614 


Hope this clear. I am really sorry for the confusion.
Back to top
View user's profile Send private message
vak255
Intermediate


Joined: 10 Sep 2004
Posts: 384
Topics: 79

PostPosted: Fri Aug 24, 2007 9:58 am    Post subject: Reply with quote

One final Note. all I need is the Merged file with valid records and merged/unmerged Err-file with invalid records. I don't need the headers and trailers in the output file so i can skip them as Kolusu said.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12380
Topics: 75
Location: San Jose

PostPosted: Fri Aug 24, 2007 10:11 am    Post subject: Reply with quote

vak255,

Quote:
I think I have not said it clearly what i am really looking for. Sorry for all the confusion, 500 and 600 and 700 records are not the total number of records, they are the record identification number you can see all records in FA starts with 500 and Fb - 600 and FC - 700.


I never assumed that they are the total number of records. I treated them as the Record identification numbers only.

Quote:

I don't want to filter the duplicate accounts. All i want to filter is the parent(500) without 600(700 is optional) and childs(600,700) without parent.


My job gives out the report listing just the account numbers. however if you need the detail then you will need another pass of the data.

If easytrieve is an option then you can do everything in just 1 pass

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
vak255
Intermediate


Joined: 10 Sep 2004
Posts: 384
Topics: 79

PostPosted: Fri Aug 24, 2007 11:21 am    Post subject: Reply with quote

Thnaks for the quick response. I just want to make sure that what i said is clear.
My shop don't have easytrieve. So i have to do this using Sort, I don't mind going for another pass.
I will try yours and will update you.
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12380
Topics: 75
Location: San Jose

PostPosted: Fri Aug 24, 2007 12:50 pm    Post subject: Reply with quote

vak255,

Here is the DFSORT/ICETOOL JCL which will give you the desired results in 2 passes.

Code:

//STEP0100 EXEC PGM=SORT
//SYSOUT   DD SYSOUT=*
//SORTIN   DD *
HH9001200708221027
5002007072929ST2142192760155 <- SHOULD GOTO NEW-FA
5002007072929ST2142195168586 <- SHOULD GOTO ERR-FA
5002007072929ST2142198130614 <- SHOULD GOTO NEW-FA
5002007072929ST2142209977374 <- SHOULD GOTO ERR-FA (NO 600)
5002007072929ST2142210123035 <- SHOULD GOTO ERR-FA (NO 600)
TT9001200708221027
HH9001200708221027
6002007072929ST2142192760155 <- SHOULD GOTO NEW-FB
6002007072929ST2142192760155 <- SHOULD GOTO NEW-FB
6002007072929ST2142195161111 <- SHOULD GOTO ERR-FB (NO 500)
6002007072929ST2142195161111 <- SHOULD GOTO ERR-FB
6002007072929ST2142195161111 <- SHOULD GOTO ERR-FB
6002007072929ST2142198130614 <- SHOULD GOTO NEW-FB
6002007072929ST2142198130614 <- SHOULD GOTO NEW-FB
6002007072929ST2142198130614 <- SHOULD GOTO NEW-FB
TT9001200708221027
HH9001200708221027
7002007072929ST2142192760155 <- SHOULD GOTO NEW-FC
7002007072929ST2142192760155 <- SHOULD GOTO NEW-FC
7002007072929ST2142195168586 <- SHOULD GOTO ERR-FC
7002007072929ST2142195168586 <- SHOULD GOTO ERR-FC
7002007072929ST2142275754799 <- SHOULD GOTO ERR-FC
TT9001200708221027
/*
//INDFILE  DD DSN=TID.FILE3.INDFILE,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=SYSDA,
//            SPACE=(CYL,(1,1),RLSE)
/*
//ALLMERG  DD DSN=TID.FILE3,
//            DISP=(NEW,CATLG,DELETE),
//            UNIT=SYSDA,
//            SPACE=(CYL,(1,1),RLSE)
//SYSIN    DD *
  OPTION EQUALS
  INCLUDE COND=(1,3,SS,EQ,C'500,600,700')
  SORT FIELDS=(16,13,CH,A)

  OUTREC IFTHEN=(WHEN=INIT,
        OVERLAY=(261:3C'0')),
         IFTHEN=(WHEN=(1,3,CH,EQ,C'500'),
        OVERLAY=(261:C'1')),
         IFTHEN=(WHEN=(1,3,CH,EQ,C'600'),
        OVERLAY=(262:C'1')),
         IFTHEN=(WHEN=(1,3,CH,EQ,C'700'),
        OVERLAY=(263:C'1'))

  OUTFIL FNAMES=ALLMERG,
  OUTREC=(01,260,261:3X)

  OUTFIL FNAMES=INDFILE,
  REMOVECC,NODETAIL,
  SECTIONS=(16,13,
  TRAILER3=(15X,16,13,260:X,
            MAX=(261,1,ZD,EDIT=(T)),
            MAX=(262,1,ZD,EDIT=(T)),
            MAX=(263,1,ZD,EDIT=(T))))
/*
//STEP0200 EXEC PGM=ICETOOL
//DFSMSG   DD SYSOUT=*
//TOOLMSG  DD SYSOUT=*
//IN       DD DSN=TID.FILE3.INDFILE,
//            DISP=SHR
//         DD DSN=TID.FILE3,
//            DISP=SHR
//ALL3     DD SYSOUT=*
//ERRFA    DD SYSOUT=*
//ERRFB    DD SYSOUT=*
//ERRFC    DD SYSOUT=*
//NFA      DD SYSOUT=*
//NFB      DD SYSOUT=*
//NFC      DD SYSOUT=*
//TOOLIN   DD *
  SPLICE FROM(IN) TO(ALL3)      -
       ON(16,13,CH) WITH(1,260) -
       WITHALL USING(CTL1)
//CTL1CNTL DD *
  OUTFIL FNAMES=ALL3,
  INCLUDE=(261,3,SS,EQ,C'110,111'),
  OUTREC=(01,260)

  OUTFIL FNAMES=ERRFA,
  INCLUDE=(001,3,CH,EQ,C'500',AND,
           261,3,SS,EQ,C'100,101'),
  OUTREC=(01,260)

  OUTFIL FNAMES=ERRFB,
  INCLUDE=(001,3,CH,EQ,C'600',AND,
           261,3,SS,EQ,C'010,011'),
  OUTREC=(01,260)

  OUTFIL FNAMES=ERRFC,
  INCLUDE=(001,3,CH,EQ,C'700',AND,
           261,3,SS,EQ,C'001,101'),
  OUTREC=(01,260)

  OUTFIL FNAMES=NFA,
  INCLUDE=(001,3,CH,EQ,C'500',AND,
           261,3,SS,EQ,C'110,111'),
  OUTREC=(01,260)

  OUTFIL FNAMES=NFB,
  INCLUDE=(001,3,CH,EQ,C'600',AND,
           261,3,SS,EQ,C'110,111'),
  OUTREC=(01,260)

  OUTFIL FNAMES=NFC,
  INCLUDE=(001,3,CH,EQ,C'700',AND,
           261,3,CH,EQ,C'111'),
  OUTREC=(01,260)
/*


Hope this helps...

Cheers

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
vak255
Intermediate


Joined: 10 Sep 2004
Posts: 384
Topics: 79

PostPosted: Fri Aug 24, 2007 1:17 pm    Post subject: Reply with quote

Kolusu, you are amazing. i tried your first JCL . Its working awesome Very Happy .
Back to top
View user's profile Send private message
vak255
Intermediate


Joined: 10 Sep 2004
Posts: 384
Topics: 79

PostPosted: Fri Aug 24, 2007 3:21 pm    Post subject: Reply with quote

I am getting the below err message for step2. I believe i can't use Icetool, but i remember using it. Anything I am missing?

Code:

   OUTFIL FNAMES=NFA,                           
   *                                             
   INCLUDE=(001,3,CH,EQ,C'500',AND,             
          *                                     
            261,3,SS,EQ,C'110,111'),             
            *                                   
   OUTREC=(01,260)                               
         *                                       
   OUTFIL FNAMES=NFB,                           
   INCLUDE=(001,3,CH,EQ,C'600',AND,             
            261,3,SS,EQ,C'110,111'),             
   OUTREC=(01,260)                               
   OUTFIL FNAMES=NFC,                           
   INCLUDE=(001,3,CH,EQ,C'700',AND,             
            261,3,CH,EQ,C'111'),                 
   OUTREC=(01,260)                               
 WER428I  CALLER-PROVIDED IDENTIFIER IS "0001"   
 WER268A  OUTFIL STATEMENT  : SYNTAX ERROR       
 WER268A  INCLUDE STATEMENT : SYNTAX ERROR       
 WER275A  NO KEYWORDS FOUND ON CONTROL STATEMENT
 WER268A  OUTREC STATEMENT  : SYNTAX ERROR       
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12380
Topics: 75
Location: San Jose

PostPosted: Fri Aug 24, 2007 3:42 pm    Post subject: Reply with quote

Quote:

WER275A NO KEYWORDS FOUND ON CONTROL STATEMENT


vak255,

Make sure that the Toolin statements have the continuation character hyphen (-). Also when you have an error then post both TOOLMSG & DFSMSG sysout messages.

Kolusu
_________________
Kolusu
www.linkedin.com/in/kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
vak255
Intermediate


Joined: 10 Sep 2004
Posts: 384
Topics: 79

PostPosted: Fri Aug 24, 2007 4:18 pm    Post subject: Reply with quote

ok, I will try that. Thank you very much
Back to top
View user's profile Send private message
vak255
Intermediate


Joined: 10 Sep 2004
Posts: 384
Topics: 79

PostPosted: Fri Aug 24, 2007 4:49 pm    Post subject: Reply with quote

tollin messages have the continuation character.
Please find below the TOOLMSG & DFSMSG sysout messages
Code:

//TOOLIN   DD *                               
  SPLICE FROM(IN) TO(ALL3)      -             
       ON(16,13,CH) WITH(1,260) -             
       WITHALL USING(CTL1)                   


Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Utilities All times are GMT - 5 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group