[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    1.015
    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)
    kf

  2. #2
    Registriert seit
    Aug 2007
    Beiträge
    249
    @KoK: das war mir schon klar, wie ich das mit dem jobscd in System stelle. Ich dachte, dass ich aus dem jobscd Werte (z.B.) Monatsletzten zurückbekomme und mit diesem Parameter ein Verzeichnis erstellen kann.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.749
    Für jede benötigte Variante einen eigenen JOBSCD einstellen.
    Per CALL einen Parameter an das Programm für die "Typ" des Job's übergeben:
    Z.B.
    "ME" = Monatserster
    "ML" = Monatsletzter
    "M1" - "M5" = Monats-Woche
    usw. usw.

    Per Weekday kannst du den Wochentag ermitteln, per %month(%date()) kennst du den Monat, usw. usw.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. IBM gibt Ergebnis für 4. Quartal 2001 bekannt
    By Burgy Zapp in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 09-02-02, 21:58
  2. aktuelle Kalender Woche - wie abfragen?
    By Timmo in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 29-03-01, 22:12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •