A********************************************************************* A*-------------------------------------------------------------------* A* (c) Noordeloos Informatica Support, 2022 * A*-------------------------------------------------------------------* A* Program ID - WRKDAYSFM * A* Description - Work with days from or to Date * A* Author - Sjors Bakker * A* Date Generated - 16 August 2022 * A********************************************************************* A DSPSIZ(24 80 *DS3) A R WINDOW A WINDOW(2 10 11 26 *NOMSGLIN) A CA03(03) A KEEP A FRCDTA A OVERLAY A USRRStdSP A WDWborder((*COLOR BLU)) A 68 RMVWDW A BLINK A P7INFO 25A O 2 1 A P7TXT1 15A O 4 1 A P7DATE 8A B 4 19DSPAtr(HI PC) A P7TXT2 15A O 5 1 A P7DAYS 3A B 5 19DSPAtr(HI) A P7TXT3 15A O 6 1 A P7SIGN 1A B 6 19VALUES('+' '-') DSPAtr(HI) A P7FKEY 25A O 9 1 A P7MSG 25A O 11 1DSPAtr(HI) A********************************************************************* /*********************************************************************/ /* (c) Noordeloos Informatica Support, 2022 */ /*-------------------------------------------------------------------*/ /* Program ID - WRKDAYS */ /* Description - Work with Days from or to Date */ /* Author - Sjors Bakker */ /* Date generated - August 15th, 2022 */ /*-------------------------------------------------------------------*/ /*********************************************************************/ pgm /*-------------------------------------------------------------------*/ /* Declarations */ /*-------------------------------------------------------------------*/ dclf wrkdaysfm dcl &julyy *dec len(2 0) dcl &juldd *dec len(3 0) dcl &jula *char len(8) dcl &wdays *dec len(3 0) dcl &wdate *char len(8) dcl &wsign *char len(1) dcl &wdate6 *char len(6) dcl &wcent *char len(1) dcl &wyear *char len(2) dcl &wmonth *char len(2) dcl &wday *char len(2) /*-------------------------------------------------------------------*/ /* Prefill Date with current Date */ /*-------------------------------------------------------------------*/ rtvsysval (qcentury) (&wcent) rtvsysval (qyear) (&wyear ) rtvsysval (qmonth) (&wmonth) rtvsysval (qday) (&wday) if (&wcent = '0') then(chgvar (&p7date) + ('19' *tcat &wyear *tcat &wmonth *tcat &wday)) if (&wcent = '1') then(chgvar (&p7date) + ('20' *tcat &wyear *tcat &wmonth *tcat &wday)) /*-------------------------------------------------------------------*/ /* send screen */ /*-------------------------------------------------------------------*/ screen: chgvar (&p7info) value('Insert Values and ENTER') chgvar (&p7txt1) value('Date. . . . . . . ') chgvar (&p7txt2) value('Days. . . . . . . ') chgvar (&p7txt3) value('Sign ( + or - ). . ') chgvar (&p7fkey) value('F3=Exit ') sndrcvf rcdfmt(window) wait(*yes) if (&in03='1') goto exit /*-------------------------------------------------------------------*/ /* Convert inserted Date to Julian Date */ /*-------------------------------------------------------------------*/ chgvar &wdate &p7date chgvar &wdays &p7days chgvar &wsign &p7sign cvtdat date(&wdate) + tovar(&jula) + fromfmt(*yymd) + tofmt(*jul) + tosep(*none) chgvar &julyy %sst( &jula 1 2 ) chgvar &juldd %sst( &jula 3 3 ) /*-------------------------------------------------------------------*/ /* Add or Substract number of days from Julian date */ /*-------------------------------------------------------------------*/ if ( &wsign = '+' ) do chgvar &juldd ( &juldd + &wdays ) enddo else do chgvar &juldd ( &juldd - &wdays ) enddo /*-------------------------------------------------------------------*/ /* Check if date is more or less then Year */ /*-------------------------------------------------------------------*/ if ( &juldd > 365 ) do chgvar &juldd ( &juldd -365 ) chgvar &julyy ( &julyy + 1 ) enddo if ( &juldd < 0 ) do chgvar &juldd (&juldd + 365 ) chgvar &julyy (&julyy - 1 ) if ( &julyy < 0 ) do chgvar &julyy ( &julyy + 100 ) enddo enddo /*-------------------------------------------------------------------*/ /* Convert Julian Date format back into inserted Date format */ /*-------------------------------------------------------------------*/ chgvar %sst( &jula 1 2 ) &julyy chgvar %sst( &jula 3 3 ) &juldd cvtdat date(&jula) + tovar(&wdate) + fromfmt(*jul) + tofmt(*yymd) + tosep(*none) /*-------------------------------------------------------------------*/ /* Send screen with new Date */ /*-------------------------------------------------------------------*/ chgvar &p7msg ('The new Date is : ' *cat &wdate *tcat ' ') goto screen /*-------------------------------------------------------------------*/ /* End of Program */ /*-------------------------------------------------------------------*/ exit: endpgm |