View previous topic :: View next topic
Author
Message
expat Global Moderator Joined: 14 Mar 2007Posts: 8797 Location: Welsh Wales
While playing around to resolve a problem on the forum I tried the following job which for some reason does not give the results expected. It is probably something really dumb that I can not see because of looking for too long <<<see the eyes
All suggestions / ideas welcome.
The first operation using CTL1 sucessfully splits the file into two files to be spliced together record to record - as shown in the DFSORT smart tricks document.
It is the CTL2 & CTL3 operations that are not giving me the expected results. I printed off the T3 file expecting to see
Code:
FM4051 00000001
FM4052 00000002
FM1SC 00000003
RN0016959700000001
RN0634255500000002
RNSC11100400000003
But actually saw
Code:
FM4051
FM4052
FM1SC
RN00169597
RN06342555
RNSC111004
The batch job is below
Code:
//ICETOOL1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//IN1 DD *
FM4051
RN00169597
FM4052
RN06342555
FM1SC
RNSC111004
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS),
// RECFM=FB,LRECL=10
//T2 DD DSN=&&T2,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS),
// RECFM=FB,LRECL=10
//T3 DD DSN=&&T3,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS),
// RECFM=FB,LRECL=28
//OUT DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) TO(T1,T2) USING(CTL1)
COPY FROM(T1) TO(T3) USING(CTL2)
COPY FROM(T2) TO(T3) USING(CTL3)
SPLICE FROM(T3) TO(OUT) ON(21,8,ZD) WITH(11,10) USING(CTL4)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=(T1,T2),SPLIT
/*
//CTL2CNTL DD
OUTREC BUILD=(1:1,10,21:SEQNUM,8,ZD)
/*
//CTL3CNTL DD
OUTREC BUILD=(11:1,10,21:SEQNUM,8,ZD)
/*
//CTL4CNTL DD
OUTFIL FNAMES=OUT,BUILD=(1,20)
/*
//*
And the output from DFSMSG is
Code:
1ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0001
ICE143I 0 BLOCKSET COPY TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 13:20 ON TUE AUG 18, 2009 -
0 OUTFIL FNAMES=(T1,T2),SPLIT
ICE146I 0 END OF STATEMENTS FROM CTL1CNTL - PARAMETER LIST STATEMENTS FOLLOW
DEBUG NOABEND,ESTAE
OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL1,SORTIN=IN1,DY*
NALLOC
SORT FIELDS=COPY
OUTFIL FNAMES=(T1,T2)
ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E9-K90007 C9-BASE E5-K31980 E7-K24705
ICE193I 0 ICEAM2 ENVIRONMENT IN EFFECT - ICEAM2 INSTALLATION MODULE SELECTED
ICE088I 0 A7J .S1 . , INPUT LRECL = 80, BLKSIZE = 80, TYPE = FB
ICE093I 0 MAIN STORAGE = (MAX,6291456,6262784)
ICE156I 0 MAIN STORAGE ABOVE 16MB = (6200910,6200910)
ICE127I 0 OPTIONS: OVFLO=RC0 ,PAD=RC0 ,TRUNC=RC0 ,SPANINC=RC16,VLSCMP=N,SZERO=Y,RESET=Y,VSAMEMT=Y,DYNSPC=64
ICE128I 0 OPTIONS: SIZE=6291456,MAXLIM=1048576,MINLIM=450560,EQUALS=N,LIST=Y,ERET=RC16 ,MSGDDN=DFSMSG
ICE129I 0 OPTIONS: VIO=N,RESDNT=ALL ,SMF=FULL ,WRKSEC=Y,OUTSEC=Y,VERIFY=N,CHALT=N,DYNALOC=N ,ABCODE=MSG
ICE130I 0 OPTIONS: RESALL=4096,RESINV=0,SVC=109 ,CHECK=Y,WRKREL=Y,OUTREL=Y,CKPT=N,STIMER=Y,COBEXIT=COB2
ICE131I 0 OPTIONS: TMAXLIM=6291456,ARESALL=0,ARESINV=0,OVERRGN=65536,CINV=Y,CFW=N,DSA=0
ICE132I 0 OPTIONS: VLSHRT=N,ZDPRINT=Y,IEXIT=N,TEXIT=N,LISTX=N,EFS=NONE ,EXITCK=S,PARMDDN=DFSPARM ,FSZEST=N
ICE133I 0 OPTIONS: HIPRMAX=0 ,DSPSIZE=0 ,ODMAXBF=2097152,SOLRF=Y,VLLONG=N,VSAMIO=N,MOSIZE=MAX
ICE235I 0 OPTIONS: NULLOUT=RC0
ICE084I 0 BSAM ACCESS METHOD USED FOR IN1
ICE231I 0 STORAGE USED FOR OUTFIL : BELOW 16M = 23552, ABOVE 16M = 4201472
ICE210I 0 T1 : EXCP USED, LRECL = 10, BLKSIZE = 27990, TYPE = FB
ICE210I 0 T2 : EXCP USED, LRECL = 10, BLKSIZE = 27990, TYPE = FB
ICE751I 1 EF-K10929 CB-K90000 F0-K30362 E8-K24705
ICE055I 0 INSERT 0, DELETE 0
ICE054I 0 RECORDS - IN: 6, OUT: 6
ICE227I 0 T1 : DELETED = 3, REPORT = 0, DATA = 3
ICE228I 0 T1 : TOTAL IN = 6, TOTAL OUT = 3
ICE227I 0 T2 : DELETED = 3, REPORT = 0, DATA = 3
ICE228I 0 T2 : TOTAL IN = 6, TOTAL OUT = 3
ICE052I 0 END OF DFSORT
1ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0002
ICE143I 0 BLOCKSET COPY TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 13:20 ON TUE AUG 18, 2009 -
0 DEBUG NOABEND,ESTAE
OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL2,SORTIN=T1,SOR*
TOUT=T3,DYNALLOC
SORT FIELDS=COPY
ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E9-K90007 C9-BASE E5-K31980 E7-K24705
ICE193I 0 ICEAM2 ENVIRONMENT IN EFFECT - ICEAM2 INSTALLATION MODULE SELECTED
ICE088I 0 A7J .S1 . , INPUT LRECL = 10, BLKSIZE = 27990, TYPE = FB
ICE093I 0 MAIN STORAGE = (MAX,6291456,6291456)
ICE156I 0 MAIN STORAGE ABOVE 16MB = (6234096,6234096)
ICE127I 0 OPTIONS: OVFLO=RC0 ,PAD=RC0 ,TRUNC=RC0 ,SPANINC=RC16,VLSCMP=N,SZERO=Y,RESET=Y,VSAMEMT=Y,DYNSPC=64
ICE128I 0 OPTIONS: SIZE=6291456,MAXLIM=1048576,MINLIM=450560,EQUALS=N,LIST=Y,ERET=RC16 ,MSGDDN=DFSMSG
ICE129I 0 OPTIONS: VIO=N,RESDNT=ALL ,SMF=FULL ,WRKSEC=Y,OUTSEC=Y,VERIFY=N,CHALT=N,DYNALOC=N ,ABCODE=MSG
ICE130I 0 OPTIONS: RESALL=4096,RESINV=0,SVC=109 ,CHECK=Y,WRKREL=Y,OUTREL=Y,CKPT=N,STIMER=Y,COBEXIT=COB2
ICE131I 0 OPTIONS: TMAXLIM=6291456,ARESALL=0,ARESINV=0,OVERRGN=65536,CINV=Y,CFW=N,DSA=0
ICE132I 0 OPTIONS: VLSHRT=N,ZDPRINT=Y,IEXIT=N,TEXIT=N,LISTX=N,EFS=NONE ,EXITCK=S,PARMDDN=DFSPARM ,FSZEST=N
ICE133I 0 OPTIONS: HIPRMAX=0 ,DSPSIZE=0 ,ODMAXBF=0,SOLRF=Y,VLLONG=N,VSAMIO=N,MOSIZE=MAX
ICE235I 0 OPTIONS: NULLOUT=RC0
ICE084I 0 EXCP ACCESS METHOD USED FOR T3
ICE084I 0 EXCP ACCESS METHOD USED FOR T1
ICE751I 1 EF-K10929 F0-K30362 E8-K24705
ICE090I 0 OUTPUT LRECL = 28, BLKSIZE = 27972, TYPE = FB
ICE171I 0 SORTOUT LRECL OF 28 IS DIFFERENT FROM SORTIN(NN) LRECL OF 10 - RC=0
ICE055I 0 INSERT 0, DELETE 0
ICE054I 0 RECORDS - IN: 3, OUT: 3
ICE052I 0 END OF DFSORT
1ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0003
ICE143I 0 BLOCKSET COPY TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 13:20 ON TUE AUG 18, 2009 -
0 DEBUG NOABEND,ESTAE
OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL3,SORTIN=T2,SOR*
TOUT=T3,DYNALLOC
SORT FIELDS=COPY
ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E9-K90007 C9-BASE E5-K31980 E7-K24705
ICE193I 0 ICEAM2 ENVIRONMENT IN EFFECT - ICEAM2 INSTALLATION MODULE SELECTED
ICE088I 0 A7J .S1 . , INPUT LRECL = 10, BLKSIZE = 27990, TYPE = FB
ICE093I 0 MAIN STORAGE = (MAX,6291456,6291456)
ICE156I 0 MAIN STORAGE ABOVE 16MB = (6234096,6234096)
ICE127I 0 OPTIONS: OVFLO=RC0 ,PAD=RC0 ,TRUNC=RC0 ,SPANINC=RC16,VLSCMP=N,SZERO=Y,RESET=Y,VSAMEMT=Y,DYNSPC=64
ICE128I 0 OPTIONS: SIZE=6291456,MAXLIM=1048576,MINLIM=450560,EQUALS=N,LIST=Y,ERET=RC16 ,MSGDDN=DFSMSG
ICE129I 0 OPTIONS: VIO=N,RESDNT=ALL ,SMF=FULL ,WRKSEC=Y,OUTSEC=Y,VERIFY=N,CHALT=N,DYNALOC=N ,ABCODE=MSG
ICE130I 0 OPTIONS: RESALL=4096,RESINV=0,SVC=109 ,CHECK=Y,WRKREL=Y,OUTREL=Y,CKPT=N,STIMER=Y,COBEXIT=COB2
ICE131I 0 OPTIONS: TMAXLIM=6291456,ARESALL=0,ARESINV=0,OVERRGN=65536,CINV=Y,CFW=N,DSA=0
ICE132I 0 OPTIONS: VLSHRT=N,ZDPRINT=Y,IEXIT=N,TEXIT=N,LISTX=N,EFS=NONE ,EXITCK=S,PARMDDN=DFSPARM ,FSZEST=N
ICE133I 0 OPTIONS: HIPRMAX=0 ,DSPSIZE=0 ,ODMAXBF=0,SOLRF=Y,VLLONG=N,VSAMIO=N,MOSIZE=MAX
ICE235I 0 OPTIONS: NULLOUT=RC0
ICE084I 0 EXCP ACCESS METHOD USED FOR T3
ICE084I 0 EXCP ACCESS METHOD USED FOR T2
ICE751I 1 EF-K10929 F0-K30362 E8-K24705
ICE090I 0 OUTPUT LRECL = 28, BLKSIZE = 27972, TYPE = FB
ICE171I 0 SORTOUT LRECL OF 28 IS DIFFERENT FROM SORTIN(NN) LRECL OF 10 - RC=0
ICE055I 0 INSERT 0, DELETE 0
ICE054I 0 RECORDS - IN: 3, OUT: 3
ICE052I 0 END OF DFSORT
1ICE200I 0 IDENTIFIER FROM CALLING PROGRAM IS 0004
ICE143I 0 BLOCKSET SORT TECHNIQUE SELECTED
ICE250I 0 VISIT http://www.ibm.com/storage/dfsort FOR DFSORT PAPERS, EXAMPLES AND MORE
ICE000I 0 - CONTROL STATEMENTS FOR 5694-A01, Z/OS DFSORT V1R5 - 13:20 ON TUE AUG 18, 2009 -
0 DEBUG NOABEND,ESTAE
OPTION MSGDDN=DFSMSG,LIST,MSGPRT=ALL,RESINV=0,SORTDD=CTL4,SORTIN=T3,SOR*
TOUT=OUT,DYNALLOC,SZERO,EQUALS,NOVLSHRT,LOCALE=NONE,NOCH*
ECK
SORT FIELDS=(21,8,ZD,A)
MODS E35=(ICE35DU,12288)
ICE201I E RECORD TYPE IS F - DATA STARTS IN POSITION 1
ICE751I 0 C5-K26318 C6-K90007 C7-K90000 C8-K23476 E4-K90007 C9-BASE E5-K31980 E6-K18181 C4-K24705 E7-K24705
ICE193I 0 ICEAM2 ENVIRONMENT IN EFFECT - ICEAM2 INSTALLATION MODULE SELECTED
ICE088I 1 A7J .S1 . , INPUT LRECL = 28, BLKSIZE = 27972, TYPE = FB
ICE093I 0 MAIN STORAGE = (MAX,6291456,6275072)
ICE156I 0 MAIN STORAGE ABOVE 16MB = (5259264,5242880)
ICE127I 0 OPTIONS: OVFLO=RC0 ,PAD=RC0 ,TRUNC=RC0 ,SPANINC=RC16,VLSCMP=N,SZERO=Y,RESET=Y,VSAMEMT=Y,DYNSPC=64
ICE128I 0 OPTIONS: SIZE=6291456,MAXLIM=1048576,MINLIM=450560,EQUALS=Y,LIST=Y,ERET=RC16 ,MSGDDN=DFSMSG
ICE129I 0 OPTIONS: VIO=N,RESDNT=ALL ,SMF=FULL ,WRKSEC=Y,OUTSEC=Y,VERIFY=N,CHALT=N,DYNALOC=(SYSDA ,004),ABCODE=MSG
ICE130I 0 OPTIONS: RESALL=4096,RESINV=0,SVC=109 ,CHECK=N,WRKREL=Y,OUTREL=Y,CKPT=N,STIMER=Y,COBEXIT=COB2
ICE131I 0 OPTIONS: TMAXLIM=6291456,ARESALL=0,ARESINV=0,OVERRGN=65536,CINV=Y,CFW=N,DSA=0
ICE132I 0 OPTIONS: VLSHRT=N,ZDPRINT=Y,IEXIT=N,TEXIT=N,LISTX=N,EFS=NONE ,EXITCK=S,PARMDDN=DFSPARM ,FSZEST=N
ICE133I 0 OPTIONS: HIPRMAX=0 ,DSPSIZE=0 ,ODMAXBF=0,SOLRF=Y,VLLONG=N,VSAMIO=N,MOSIZE=MAX
ICE235I 0 OPTIONS: NULLOUT=RC0
ICE084I 0 BSAM ACCESS METHOD USED FOR OUT
ICE084I 0 EXCP ACCESS METHOD USED FOR T3
ICE750I 0 DC 55944 TC 0 CS DSVVV KSZ 9 VSZ 9
ICE752I 0 FSZ=1998 RC IGN=0 E AVG=40 0 WSP=105 C DYN=3 56648
ICE751I 1 DE-K24705 D5-K24705 D3-K24705 D7-K24705 E8-K24705
ICE090I 0 OUTPUT LRECL = 28, BLKSIZE = 27972, TYPE = FB
ICE055I 0 INSERT 1, DELETE 6
ICE054I 0 RECORDS - IN: 6, OUT: 1
ICE134I 0 NUMBER OF BYTES SORTED: 168
ICE165I 0 TOTAL WORK DATA SET TRACKS ALLOCATED: 30 , TRACKS USED: 30
ICE199I 0 MEMORY OBJECT STORAGE USED = 0M BYTES
ICE180I 0 HIPERSPACE STORAGE USED = 0K BYTES
ICE188I 0 DATA SPACE STORAGE USED = 0K BYTES
ICE052I 0 END OF DFSORT
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
Hi,
I ran the same code of yours but I saw the output as
Code:
FM4051 RN00169597
FM4052 RN06342555
FM1SC RNSC111004
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
expat,
I ran your job as is and got a JCL error because you are missing DD * for CTL2CNTL, CTL3CNTL and CTL4CNTL DD and looks like your system generated the empty sysin cards for them. Even your DFSMSG doesn't show the control cards being used. Code the DD * and re-run your job and see if it works.
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
Hi Expat
Try this
Code:
//ICETOOL1 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//IN1 DD *
FM4051
RN00169597
FM4052
RN06342555
FM1SC
RNSC111004
//T1 DD DSN=&&T1,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS),
// RECFM=FB,LRECL=10
//T2 DD DSN=&&T2,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS),
// RECFM=FB,LRECL=10
//T3 DD DSN=&&T3,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS),
// RECFM=FB,LRECL=28
//T4 DD DSN=&&T4,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS),
// RECFM=FB,LRECL=28
//T5 DD DSN=&&T5,UNIT=SYSDA,SPACE=(CYL,(5,5)),DISP=(MOD,PASS),
// RECFM=FB,LRECL=28
//OUT DD SYSOUT=*
//TOOLIN DD *
COPY FROM(IN1) TO(T1,T2) USING(CTL1)
COPY FROM(T1) TO(T3) USING(CTL2)
COPY FROM(T2) TO(T4) USING(CTL3)
COPY FROM(T3) TO(T5)
COPY FROM(T4) TO(T5)
COPY FROM(T5) TO(OUT)
/*
//CTL1CNTL DD *
OUTFIL FNAMES=(T1,T2),SPLIT
/*
//CTL2CNTL DD *
OUTREC BUILD=(1:1,10,21:SEQNUM,8,ZD)
/*
//CTL3CNTL DD *
OUTREC BUILD=(11:1,10,21:SEQNUM,8,ZD)
/*
//CTL4CNTL DD *
OUTFIL FNAMES=OUT,BUILD=(1,28)
/*
Output I got
Code:
FM4051 00000001
FM4052 00000002
FM1SC 00000003
RN0016959700000001
RN0634255500000002
RNSC11100400000003
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
expat,
you also don't need that many passes of data, it can achieved with 1 pass of data using GROUP. Since you don't have the latest PTF installed , here is a 1 pass SPLICE solution to get the desired results
Code:
//STEP0100 EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IN DD *
FM4051
RN00169597
FM4052
RN06342555
FM1SC
RNSC111004
//OUT DD SYSOUT=*
//TOOLIN DD *
SPLICE FROM(IN) TO(OUT) ON(21,8,CH) WITH(11,10) USING(CTL1)
//CTL1CNTL DD *
OPTION COPY
INREC IFTHEN=(WHEN=INIT,OVERLAY=(21:SEQNUM,8,ZD)),
IFTHEN=(WHEN=(1,2,CH,EQ,C'RN'),
OVERLAY=(11:1,10,21:+1,SUB,21,8,ZD,M11,LENGTH=8))
OUTFIL FNAMES=OUT,BUILD=(1,20)
/*
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
Hi kolusu,
I ran your code too but i got
Code:
FM4051 RN00169597
FM4052 RN06342555
FM1SC RNSC111004
Why is that so?
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
premkrishnan wrote:
Why is that so?
huh? what do you mean? The job I have shown gives you the final output without any intermediate files. What exactly do you think is wrong with the output?
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
I guess Expat wants one below
Code:
FM4051 00000001
FM4052 00000002
FM1SC 00000003
RN0016959700000001
RN0634255500000002
RNSC11100400000003
as output
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
premkrishnan,
Your assumption about the final output is wrong. Expat has shown the temp file results and when spliced would result in the final result as shown by me.
Back to top
Pandora-Box Global Moderator Joined: 07 Sep 2006Posts: 1592 Location: Andromeda Galaxy
GOt that
Back to top
expat Global Moderator Joined: 14 Mar 2007Posts: 8797 Location: Welsh Wales
Skolusu wrote:
expat,
I ran your job as is and got a JCL error because you are missing DD * for CTL2CNTL, CTL3CNTL and CTL4CNTL DD and looks like your system generated the empty sysin cards for them. Even your DFSMSG doesn't show the control cards being used. Code the DD * and re-run your job and see if it works.
I just knew it was something really really dumb.
Worked it out, when I cut and paste from the pdf with the example from DFSORT smart tricks, it appears that the * on the CTL2,3 and 4 cards was not copied over, and I never noticed.
Thanks guys, all the help and alternate solutions is much appreciated.
Back to top
Frank Yaeger DFSORT Developer Joined: 15 Feb 2005Posts: 7129 Location: San Jose, CA
I've noticed that cut and paste from the .pdf file can result in some strange characters. Not sure why.
Back to top
Anuj Dhawan Superior Member Joined: 22 Apr 2006Posts: 6250 Location: Mumbai, India
Quote:
it appears that the * on the CTL2,3 and 4 cards was not copied over
Yeah that's correct Expat. I ran into that thing couple of times. One other error which I faced due to "*" was not copied when you use in-stream data terminator (/*). But yes, why this happens?
Back to top
expat Global Moderator Joined: 14 Mar 2007Posts: 8797 Location: Welsh Wales
Don't know why it happens, but I sure am aware that it does now.
Just another of those little things that we need to remember.
Back to top
Please enable JavaScript!