So schlecht find ich jetzt Ronalds Vorschlag nicht...

Damit Du die Woche auf den Monat reduzieren kannst, errechne doch die Woche des Tagesdatum, dann die Woche des 1. des jeweiligen Monats; Differenz + 1 et voilà, c'est fait.

Haste kein SQL hilft dir vielleicht das weiter:
Code:
H NoMain
  * ------------------------------------------------------- Prototypes
 D DayOfWeek       PR             5I 0
 D                                 D   Value
 D WeekOfYear      PR             5I 0
 D                                 D   Value
  * -----------------------------------------------------------------
  *
  * Procedure: DayOfWeek
  * Description: Retrieve day of week using ISO 8601 standard
  *              (0=Monday - 6=Sunday)
  *
 P DayOfWeek       B                   Export
 D DayOfWeek       PI             5I 0
 D  DateIn                         D   Value
 D NbrDays         S             10I 0
 D Monday          C                   D('2001-01-04')
  /Free
   NbrDays = %DIFF(DateIn:Monday:*DAYS);
   Return  = %REM( %REM(NbrDays:7) + 7 : 7);
  /End-Free
 P DayOfWeek       E
  * -----------------------------------------------------------------
  *
  * Procedure: WeekOfYear
  * Description: Retrieve week of year using ISO 8601 standard
  *              (Year starts on Monday of week containing January 4)
  *
 P WeekOfYear      B                   Export
 D WeekOfYear      PI             5I 0
 D  DateIn                         D   Value
 D                 DS
 D Jan04Date                       D   INZ(D'0001-01-04')
 D  Jan04Year                     4  0 Overlay(Jan04)
 D FirstMonday     S               D
 D Jan04DOW        S              5I 0
  /Free
   // Change Jan04Date to target year,
   // then calculate first Monday of target year
  Jan04Year   = %SUBDT(DateIn:*Y);           
  Jan04DOW    = DayOfWeek(Jan04Date);        
   FirstMonday = Jan04Date - %DAYS(Jan04DOW); 
  // If target date is before first Monday, switch to prior year
   If DateIn < FirstMonday;                   
    Jan04Year   = Jan04Year D 1;             
    Jan04DOW    = DayOfWeek(Jan04Date);      
     FirstMonday = Jan04Date - %DAYS(Jan04DOW);
   Endif;
   // Return week number (number of full weeks since first Monday + 1)
   Return %DIV(%DIFF(DateIn:FirstMonday:*DAYS):7) + 1;
  /End-Free
 P WeekOfYear      E
Quelle: iprodeveloper.com (geht ab V5R1)