Best way to increment weeks based on fiscal start year


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Best way to increment weeks based on fiscal start year
# 1  
Old 10-21-2017
Best way to increment weeks based on fiscal start year

Hi Folks -

I'm looking for the best way to to increment fiscal weeks - allow me to explain.

At my one client, 10/01/17 was the beginning if year fiscal year 2018.
Each week, I need to manage a unique set of variable that are updated in my application - they are called substitution variables.

I manage them (manually) in a comma delimited format, and then run a ksh over them to extract both columns and spool them to an "*.mxl" file in a specific import format.

For instance:

Code:
curwk_d,'wk04 fy18';
pw1_d,'wk03 fy18';
pw2_d,'wk02 fy18';
pw3_d,'wk01 fy18';
pw4_d,'wk53 fy17';
p5w_d,'wk52 fy17';
p6w_d,'wk51 fy17';
p7w_d,'wk50 fy17';
p8w_d,'wk49 fy17';
p9w_d,'wk48 fy17';
p10w_d,'wk47 fy17';
p11w_d,'wk46 fy17';
p12w_d,'wk45 fy17';

And then the import format is as such:

Code:
alter system set variable curwk_d 'wk04 fy18';
alter system set variable pw1_d 'wk03 fy18';
alter system set variable pw2_d 'wk02 fy18';
alter system set variable pw3_d 'wk01 fy18';
alter system set variable pw4_d 'wk53 fy17';
alter system set variable pw5_d 'wk52 fy17';
alter system set variable pw6_d 'wk51 fy17';
alter system set variable pw7_d 'wk50 fy17';
alter system set variable pw8_d 'wk49 fy17';
alter system set variable pw9_d 'wk48 fy17';
alter system set variable pw10_d 'wk47 fy17';
alter system set variable pw11_d 'wk46 fy17';
alter system set variable pw12_d 'wk45 fy17';

Then, the "*.mxl" file is read into the target system using a certain utility called from a shell script, but I digress.

As you can see, there are 13 variables. 1 is the current week (from start of fiscal) and the 12 additional previous week variables.

For instance, current week is the upcoming week, which is the 4th week since start of fiscal, as indicated by wk04.

My question is, is there an easy way to manage this and increment as necessary each week (on Saturday) when this is run?

Thank you!

Last edited by SIMMS7400; 10-22-2017 at 12:24 AM..
# 2  
Old 10-22-2017
Not sure I fully understand. You want to switch "curwk_d" from "wk04 fy18" to "wk05 fy18", "pw1_d" to "wk04 fy18", and so forth? What if a week 53 doesn't exist? What if the script is accidentally run twice on a Sunday?
# 3  
Old 10-22-2017
Hi Rudy -

Code:
You want to switch "curwk_d" from "wk04 fy18" to "wk05 fy18", "pw1_d" to "wk04 fy18", and so forth?

Yes

Code:
What if a week 53 doesn't exist?

This will never be the case, there will always be 53 weeks for this client

Code:
What if the script is accidentally run twice on a Sunday?

It should never be run twice, however I suppose there is that possibility. The plan is to schedule it so that doesn't happen.

Please let me know if you need anything else!
# 4  
Old 10-22-2017
How about
Code:
while IFS=", " read PW WK FY; do WK=$(( ${WK##*[a-z]}%53 + 1 )); printf "$PW, 'wk%02d $FY\n" $WK; done < file
curwk_d, 'wk05 fy18';
pw1_d, 'wk04 fy18';
pw2_d, 'wk03 fy18';
pw3_d, 'wk02 fy18';
pw4_d, 'wk01 fy17';
p5w_d, 'wk53 fy17';
p6w_d, 'wk52 fy17';
p7w_d, 'wk51 fy17';
p8w_d, 'wk50 fy17';
p9w_d, 'wk49 fy17';
p10w_d, 'wk48 fy17';
p11w_d, 'wk47 fy17';
p12w_d, 'wk46 fy17';

and / or
Code:
while IFS=", " read PW WK FY; do WK=$(( ${WK##*[a-z]}%53 + 1 )); printf "alter system set variable $PW, 'wk%02d $FY\n" $WK; done < file
alter system set variable curwk_d, 'wk05 fy18';
alter system set variable pw1_d, 'wk04 fy18';
alter system set variable pw2_d, 'wk03 fy18';
alter system set variable pw3_d, 'wk02 fy18';
alter system set variable pw4_d, 'wk01 fy17';
alter system set variable p5w_d, 'wk53 fy17';
alter system set variable p6w_d, 'wk52 fy17';
alter system set variable p7w_d, 'wk51 fy17';
alter system set variable p8w_d, 'wk50 fy17';
alter system set variable p9w_d, 'wk49 fy17';
alter system set variable p10w_d, 'wk48 fy17';
alter system set variable p11w_d, 'wk47 fy17';
alter system set variable p12w_d, 'wk46 fy17';

EDIT: Sorry, I had overlooked the fiscal year's increment on change from week 53 to 1. Here it is:
Code:
while IFS=", " read PW WK FY
  do    WKO=${WK##*[a-z]}
        WK=$(( WKO%53 + 1 ))
        FY="${FY//[a-z;\']/}"
        [ "$WKO" -gt "$WK" ] && (( FY++ ))
        printf "alter system set variable %s, 'wk%02d fy%s';\n" $PW $WK $FY
  done < file


Last edited by RudiC; 10-22-2017 at 06:14 PM.. Reason: correcting logical error
This User Gave Thanks to RudiC For This Post:
# 5  
Old 10-23-2017
Note that if this customer always has a fiscal week #53, there must be some years that don't have a fiscal week #1.

I have never seen a fiscal calendar like this used under any circumstances. Usually, the number of fiscal weeks in a year (i.e., 52 or 53) depends on what day of the week the 1st fiscal day of the year occurs.

Please explain how the 1st fiscal day of this customer's year is determined.
This User Gave Thanks to Don Cragun For This Post:
# 6  
Old 10-23-2017
Hi Don -

Thanks for the follow up. So, I have some information.

The 1st fiscal day of my client's year is the first Saturday in October, every year.

Also, thhey operate on a 53 week year every 5 years. For instance, the last 53 week year was 2012.

Rudi's solution is working, however I was hoping to see the above conditions to determine the subvar advancements. Would that be possible?
# 7  
Old 10-23-2017
Hi SIMMS7400,
In post #51 in your earlier thread (Parsing a column of text file - best practices) I gave you code that contains a function (findSaturdayOnOrBefore()) that finds the 1st Saturday on or before a date given to it as an argument. Since it worked for me when I was testing it and you never said that it didn't work for you, I assumed that it worked for you (although you haven't acknowledged seeing that post).

Can't you use that function to determine the 1st Saturday on or before 10/07/YYYY? Isn't the result returned by that function the first day of a fiscal year for your customer? Can't you then find the first day of the next fiscal year using that function with 10/07/$((YYYY+1)) as the argument. And then, can't you add one week to the first day in a fiscal year in a loop until you hit the 1st week of the next fiscal year saving the 52 or 53 values you get in that loop as the start of the 52 or 53 weeks in that fiscal year?

Why don't you try doing this on your own, show us what you come up with, and let us know if you get stuck?

PS: Is 10/07/2017 the first day of your customer's FY2017 or is it the first day of FY2018?

PPS: Note that we are here to help you learn how to use the tools on your UNIX or UNIX-like system to write code that makes it do what you want it to do. We are not here to act as your unpaid programming staff.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Splitting week start date and end date based on custom period start dates

Below are my custom period start and end dates based on a calender, these dates are placed in a file, for each period i need to split into three weeks for each period row, example is given below. Could you please help out to achieve solution through shell script.. File content: ... (2 Replies)
Discussion started by: nani2019
2 Replies

2. Web Development

Color a Badge Based on the Weeks the Member is Active in the Latest Sequence

Hi Ravinder, Could you (and anyone else who wants to help out) check this PHP code and confirm it does what I expect it to do, which is to color a badge based on the weeks a member is active in the latest sequence? I did a cut-paste-change from my "days in sequence" PHP prototype script and it... (6 Replies)
Discussion started by: Neo
6 Replies

3. Shell Programming and Scripting

Increment with awk - how to define start value

Hello, I am running under ubuntu18.04 My question is about awk. inputfile 0wo010011oasasds sdjhsdjh=, u12812888 8jsjkahsjajnsanakn akjskjskj=, suhuhuhwx kskkxmsnnxsnjxsnjxsnjjnjjdi=, 22878ssssss Below code adds consecutive numbers when string = is found run_code: awk -F'=' -v OFS='='... (4 Replies)
Discussion started by: baris35
4 Replies

4. Shell Programming and Scripting

Create new file with increment column based on conditions

Hello, Using bash script, i need to process the following file: 887,86,,2013-11-06,1,10030,5,2,0,200,, 887,86,,2013-11-05,1,10030,5,2,0,199,, 887,138,,2013-11-06,1,10031,6,2,0,1610612736,, 887,164,,2013-11-06,1,10000,0,2,0,36000,, and to create a new file such as the below ... (2 Replies)
Discussion started by: JonhyDeep
2 Replies

5. Shell Programming and Scripting

How to calculate the total number of weeks from a specify year?

Hi anyone can help? How to calculate total number of weeks from a specify date, for example, 01 Jan 2012. Thx! (2 Replies)
Discussion started by: rayray2013
2 Replies

6. Shell Programming and Scripting

Value Increment based on count

Hi All, I have source file x.txt 0001|0003 0031|0031 0045|0049 My desired output should be: y.txt 0001 0002 0003 0031 0045 0046 0047 (11 Replies)
Discussion started by: kmsekhar
11 Replies

7. Shell Programming and Scripting

My PM has told me to learn shell scripting in 2 weeks , how should I start?

My PM has told me to learn shell scrting in 2 weeks , how should I start?:confused::confused::confused::confused: (1 Reply)
Discussion started by: manalisharmabe
1 Replies

8. Shell Programming and Scripting

how to increment days according to year & month

Hiii i have a file with data as shown below: a.dat: RAO 1900 2 7 0 0 0.00 10.8000 76.8000 10.0 0 0.00 0 6.00 0.00 0.00 0 0.00 6.00 0 NULL LEE 1901 2 15 0 0 0.00 26.0000 100.0000 0.0 0 0.00 0 0.00 0.00 0.00 0 6.00 6.00 0 NULL RAO 1901 4... (3 Replies)
Discussion started by: reva
3 Replies

9. Solaris

Number of files - in start of year

Is there any way to find "Number of files" that exists on my solaris parition in the starting of 2009 year ? I know ctime or mtime will not help and unix wouldnt store creation time. Only hope i can see ( and i am not sure if that will help ) is that my system is up from last 2 years without... (5 Replies)
Discussion started by: rajwinder
5 Replies

10. Shell Programming and Scripting

How many weeks in a year

Hi, I search how i could do to find if a year (for example 2004, 1989, 2058) has 52 or 53 weeks... Have you a idea for me please??? (1 Reply)
Discussion started by: Castelior
1 Replies
Login or Register to Ask a Question