Damit das gequängel ein Ende hat, hier ist der Code.

Rechnung folgt.



Code:
      *****************************************************************
      *                                                               *
      * ------------------------------------------------------------- *
      *  ! Achtung !! Programm muss wegen der verwendeten APIs        *
      *  erst mit CRTRPGMOD und dann mit CRTRPGPGM ACTGRP(QILE)       *
      *  umgewandelt werden !!                                        *
      * ------------------------------------------------------------- *
      *                                                               *
      *****************************************************************
      *                                                               *
      * ------------------------------------------------------------- *
      *         P r o g r a m m   -   B e s c h r e i b u n g         *
      * ------------------------------------------------------------- *
      *                                                               *
      *  Das Programm addiert zu dem im Parameter mitgegebenem Datum  *
      *  10 Tage, ermittelt den Wochentag, addiert bei Samstag oder   *
      *  Sonntag nochmals 1 oder 2 Tage dazu.                         *
      *                                                               *
      *  Eingangsparameter / Rückgabeparameter :                      *
      *                                                               *
      *  PE#Datum  (6S 0)  -  Datumsfeld Format TTMMJJ                *
      *                                                               *
      *  Rückgabeparameter:                                           *
      *                                                               *
      *  PE#Error   (1A)   -  Fehler  ('0' = O.K., '1' = Fehler)      *
      *                                                               *
      *****************************************************************
 
     H DatEdit(*DMY.)
     H DatFmt(*EUR.)
     H Debug(*Yes)
     H DecEdit('0,')
     H ExprOpts(*MaxDigits)
     H Option(*ShowCpy : *NoDebugIO : *SrcStmt)
     H TimFmt(*HMS)
 
     D PE#Datum        S              6S 0
     D PE#RtnCode      S              1A
 
     D P#Datum         S             10A
     D P#DatFmt        S             10A   Inz('DDMMYY')
     D P#ApiParm       S              9B 0
     D P#TagNr         S              9B 0
 
     D #DatumD         S               D
 
      *=====================================================================
      *  *ENTRY - Parameter
      *=====================================================================
 
     C     *Entry        PList
     C                   Parm                    PE#Datum
     C                   Parm                    PE#RtnCode
 
      **********************************************************************
      ******    H  A  U  P  T  V  E  R  A  R  B  E  I  T  U  N  G     ******
      **********************************************************************
 
     C                   Eval      PE#RtnCode = '0'
 
     C                   Do
 
      * Datum auf Gültigkeit prüfen
 
     C     *DMY          Test(D)                 PE#Datum               RT
 
     C                   If        *InRT
     C                   Eval      PE#RtnCode = '1'
     C                   Leave
     C                   EndIf
 
     C     *DMY          Move      PE#Datum      #DatumD
 
     C                   AddDur    10:*D         #DatumD
 
     C     *DMY          Move      #DatumD       PE#Datum
 
     C                   Movel     PE#Datum      P#Datum
 
     C                   CallB(D)  'CEEDAYS'
     C                   Parm                    P#Datum
     C                   Parm                    P#DatFmt
     C                   Parm                    P#ApiParm
     C                   Parm                    *OMIT
 
     C                   CallB(D)  'CEEDYWK'
     C                   Parm                    P#ApiParm
     C                   Parm                    P#TagNr
     C                   Parm                    *OMIT
 
      * neuer Tag ist Samstag
 
     C                   If        P#TagNr = 7
     C                   AddDur    2:*D          #DatumD
     C                   EndIf
 
      * neuer Tag ist Sonntag
 
     C                   If        P#TagNr = 1
     C                   AddDur    1:*D          #DatumD
     C                   EndIf
 
     C     *DMY          Move      #DatumD       PE#Datum
 
     C                   EndDo
 
      *----------------------------------------------------------------
      *  Programmende
      *----------------------------------------------------------------
 
     C                   Eval      *InLR = *On

[Dieser Beitrag wurde von JoergZ am 02. August 2001 editiert.]