Joined: 28 Jun 2007 Posts: 23 Location: Bmth England
The dataset below contains the bank holidays for the currencies CNY INR IDR and THB, I need to sort through the dataset and find those dates when all four currencies have a Bank Holiday.
I have written this routine based on include statements and trailer counts
INCLUDE COND=(22,1,CH,EQ,C'4')
SORT FIELDS=(1,5,CH,A)
The answer is 01 01 is the only date when all four countries are off.
Can anyone think of something else. Is it possible to build a SUM control statement to extract records when all four match.
Code:
CNY Mon 01 01 New Year's Day
CNY Tue 01 02 BANK HOLIDAY
CNY Wed 01 03 BANK HOLIDAY
CNY Mon 02 19 Chinese New Year Observed
CNY Tue 02 20 Second Day of Chinese New Year
CNY Thu 02 22 Chinese New Year Holiday Perio
CNY Fri 02 23 Chinese New Year Holiday Perio
CNY Tue 05 01 Labour Day
CNY Wed 05 02 Labour Day
CNY Fri 05 04 Labour Day
CNY Mon 05 07 Labour Day
CNY Mon 10 01 National Day
CNY Tue 10 02 National Day
CNY Wed 10 03 National Day
CNY Thu 10 04 National Day
CNY Fri 10 05 National Day
INR Mon 01 01 BANK HOLIDAY
INR Fri 01 26 Republic Day
INR Tue 01 30 BANK HOLIDAY
INR Fri 02 16 BANK HOLIDAY
INR Mon 03 19 BANK HOLIDAY
INR Tue 03 27 BANK HOLIDAY
INR Fri 04 06 Good Friday
INR Tue 05 01 May Day
INR Wed 05 02 Buddha Purnima
INR Wed 08 15 Independence Day
INR Mon 08 20 BANK HOLIDAY
INR Tue 10 02 Gandhi Jayanti
INR Fri 11 09 Deepavali
INR Tue 12 25 Christmas Day
IDR Mon 01 01 NEW YEARS DAY
IDR Mon 03 19 BANK HOLIDAY
IDR Fri 04 06 GOOD FRIDAY
IDR Thu 05 17 ASCENSION DAY
IDR Fri 06 01 BANK HOLIDAY
IDR Fri 08 17 INDEPENDENCE DAY
IDR Fri 10 12 BANK HOLIDAY
IDR Thu 12 20 IDUL ADHA
IDR Tue 12 25 CHRISTMAS DAY
THB Mon 01 01 New Year's Day
THB Tue 01 02 New Year's Holiday
THB Mon 03 05 Makha Bucha Day Observed
THB Fri 04 06 Chakri Day
THB Fri 04 13 Songkran Festival Day
THB Mon 04 16 Songkran Festival Day
THB Tue 05 01 Labour Day
THB Mon 05 07 Coronation Day Observed
THB Thu 05 31 BANK HOLIDAY
THB Mon 07 30 BANK HOLIDAY
THB Mon 08 13 Queen's Birthday Observed
THB Tue 10 23 King Chulalongkorn Memorial Da
THB Wed 12 05 King's Birthday
THB Mon 12 10 Constitution Day
THB Mon 12 31 New Year's Eve
I used the below sort card , Which gave the expected output for me.
Code:
SORT FIELDS=(10,5,CH,A)
INREC FIELDS=(1:1,80,81:C'1')
SUM FIELDS=(81,1),FORMAT=ZD
OUTFIL FNAMES=SORTOUT,
NODETAIL,REMOVECC,
INCLUDE=(81,1,CH,EQ,C'4'),
TRAILER1=(1:'HOLIDAY FOR FOUR BANK :',24:COUNT=(M10,LENGTH=03))
SORT FIELDS=(10,5,CH,A)
OPTION ZDPRINT
INREC FIELDS=(1:1,80,81:C'1')
SUM FIELDS=(81,1),FORMAT=ZD
OUTFIL FNAMES=SORTOUT,
NODETAIL,REMOVECC,
INCLUDE=(81,1,CH,EQ,C'4'),
TRAILER1=(1:'HOLIDAY FOR FOUR BANK :',24:COUNT=(M10,LENGTH=03),
27:' MONTH :',35:09,2,37:' DAY :',43:12,2,36X)
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Sai,
I think you want 10,2 instead of 9,2 and 13,2 instead of 12,2. But your solution will only show the last date if there is more than one date. For example, if the target dates were 01 01 and 12 02, your solution would show:
Code:
HOLIDAY FOR FOUR BANK : 2 MONTH :12 DAY :02
whereas my solution would show:
Code:
Dates when all four currencies have a holiday
01 01
12 02
Hi Frank,
I Copied the input what evanswillo gave without leading space so the month and day is in the position 9 & 12.I think the below sort card will generate all the days when four banks are off.
Code:
SORT FIELDS=(09,5,CH,A)
INREC FIELDS=(1:1,80,81:C'1')
OPTION ZDPRINT
SUM FIELDS=(81,1),FORMAT=ZD
OUTFIL FNAMES=SORTOUT,
NODETAIL,REMOVECC,
INCLUDE=(81,1,CH,EQ,C'4'),
TRAILER1=(1:'TOTAL NO OF HOLIDAYS :',23:COUNT=(M10,LENGTH=3)),
SECTIONS=(1,10,
TRAILER3=(1:'MONTH :',8:9,2,10:' DAY :',16:12,2))
Output
Code:
MONTH :01 DAY :01
MONTH :01 DAY :02
TOTAL NO OF HOLIDAYS : 2
Joined: 15 Feb 2005 Posts: 7129 Location: San Jose, CA
Sai,
Since you have 81,1,CH,EQ,C'4', I added OPTION ZDPRINT to your control statements. Although ZDPRINT=YES is DFSORT's supplied installation default, sites can change it to ZDPRINT=NO, so it's best to specify ZDPRINT. Alternatively, you could use 81,1,ZD,EQ,4 and then you wouldn't need ZDPRINT.