Datum in HTTP-Format

HTTPDATE (RPGLE)



  X * UTCDIFF BEGSR HTTPDATE 14  
  X * UTCDIFF7 BEGSR HTTPDATE 14  
  X * *PSSR BEGSR HTTPDATE 2  
  X  
  X * *ENTRY PLIST HTTPDATE 4  
  X  
H  
H *COPYRIGHT JÜRGEN REULE 2010-2023
H  
H DATFMT(*ISO) TIMFMT(*ISO)
H DFTACTGRP(*NO) ACTGRP('QILE')
H COPYRIGHT('COPYRIGHT JÜRGEN REULE 2010-2023')
H  
D HTTPDATE1     DS            
D DAY1A         3 A     INZ
D           1 A     INZ(',')
D           1 A     INZ
D DAY1         2 A     INZ
D           1 A     INZ
D MONTH1A         3 A     INZ
D           1 A     INZ
D YEAR1         4 A     INZ
D           1 A     INZ
D TIME1           T     INZ TIMFMT(*HMS:)
D           1 A     INZ
D GMT         3 A     INZ('GMT')
D                    
D HTTPDATE2     DS            
D DATE           D     INZ DATFMT(*ISO-)
D           1 A     INZ('T')
D TIME           T     INZ TIMFMT(*HMS:)
D           1 A     INZ('Z')
D                    
D UTCOFFSETS     PR           EXTPROC('CEEUTCO')
D HOURS         10 I 0    
D MINUTES         10 I 0    
D SECONDS         8 F      
D FEEDBACK         12 A     OPTIONS(*OMIT)
D                    
D UTCOFFSET     S   10 I 0   INZ
D HOURS     S   10 I 0   INZ
D MINUTES     S   10 I 0   INZ
D SECONDS     S   8 F     INZ
D FEEDBACK     S   12 A     INZ
D                    
D IDX     S   2 S 0   INZ
D DIFF     S   10 I 0   INZ
D HTTPDATE     S   200 A      
D DATETYPE     S   2 S 0    
D DATETIME     S     Z      
D DATETIME2     S     Z     INZ
D DATEMON     C           CONST(D'1904-01-04')
D                    
D EPOCH     C           CONST(Z'1970-01-01-+
D                             00.00.00.000000')
D                    
D DATEDS     DS            
D YEAR         4 A     INZ
D           1 A     INZ('-')
D MONTH         2 A     INZ
D           1 A     INZ('-')
D DAY         2 A     INZ
D                    
D LEN     C           CONST(3)
D DAYS     C           CONST('MonTueWed+
D                          ThuFriSatSun')
D MONTHS     C           CONST('JanFebMar+
D                          AprMayJun+
D                          JulAugSep+
D                          OctNovDec')
D                    
C          
C *     --------------------------------------
C *     Abweichung zu UTC ermitteln
C *     --------------------------------------
C       CLEAR   HOURS            
C       CLEAR   MINUTES            
C       CLEAR   SECONDS            
C       CALLP(E) UTCOFFSETS ( HOURS:
C         MINUTES:
C         SECONDS:FEEDBACK)
C       EVAL UTCOFFSET  =  SECONDS
C          
C       SELECT    
C     DATETYPE WHENEQ 1              
C *     --------------------------------------
C *     Datum und Zeit in UTC umrechnen
C *     --------------------------------------
C       EXSR UTCDIFF              
C          
C *     --------------------------------------
C *     Wochentag ermitteln
C *     --------------------------------------
C       MOVE DATETIME2 DATE            
C       MOVE DATETIME2 TIME            
C          
C *     --------------------------------------
C *     Wochentag ermitteln
C *     --------------------------------------
C     DATE SUBDUR DATEMON DIFF:*D            
C       DIV 7 DIFF            
C       MVR   IDX            
C       MULT LEN IDX            
C       ADD 1 IDX            
C     LEN SUBST DAYS:IDX DAY1A            
C          
C *     --------------------------------------
C *     Tag ermitteln
C *     --------------------------------------
C       EXTRCT DATETIME2:*D DAY1            
C          
C *     --------------------------------------
C *     Monat ermitteln
C *     --------------------------------------
C       EXTRCT DATETIME2:*M IDX            
C       SUB 1 IDX            
C       MULT LEN IDX            
C       ADD 1 IDX            
C     LEN SUBST MONTHS:IDX MONTH1A            
C          
C *     --------------------------------------
C *     Jahr ermitteln
C *     --------------------------------------
C       EXTRCT DATETIME2:*Y YEAR1            
C          
C *     --------------------------------------
C *     Zeit ermitteln
C *     --------------------------------------
C       MOVE TIME TIME1            
C          
C *     --------------------------------------
C *     Datum und Zeit übertragen
C *     --------------------------------------
C       MOVEL(P) HTTPDATE1 HTTPDATE            
C          
C     DATETYPE WHENEQ 2              
C *     --------------------------------------
C *     Datum und Zeit in UTC umrechnen
C *     --------------------------------------
C       EXSR UTCDIFF              
C          
C *     --------------------------------------
C *     Datum und Zeit übertragen
C *     --------------------------------------
C       MOVE DATETIME2 DATE            
C       MOVE DATETIME2 TIME            
C       MOVEL(P) HTTPDATE2 HTTPDATE            
C          
C     DATETYPE WHENEQ 7              
C       MOVE EPOCH DATETIME2            
C     'GMT' IFEQ GMT              
C *     --------------------------------------
C *     Datum und Zeit übertragen
C *     --------------------------------------
C       MOVEL(P) HTTPDATE HTTPDATE1            
C          
C *     --------------------------------------
C *     Zeitpunkt ermitteln
C *     --------------------------------------
C     MONTH1A SCAN MONTHS IDX     77 78  
C     *IN78 IFEQ *ON              
C       SUB 1 IDX            
C       DIV LEN IDX            
C       ADD 1 IDX            
C       MOVE YEAR1 YEAR            
C       MOVE IDX MONTH            
C       MOVE DAY1 DAY            
C     *ISO- TEST(D)   DATEDS     77  
C   N77   TEST   TIME1     77  
C     *IN77 IFEQ *OFF              
C     *ISO- MOVE DATEDS DATE            
C       MOVE TIME1 TIME            
C       MOVE DATE DATETIME2            
C       MOVE TIME DATETIME2            
C          
C *     --------------------------------------
C *     Datum und Zeit von UTC umrechnen
C *     --------------------------------------
C       EXSR UTCDIFF7              
C       ENDIF                
C       ENDIF                
C       ENDIF                
C       ENDSL                
C       SETON         LR  
C          
  X * *MAIN* EXSR HTTPDATE    
  X * *MAIN* EXSR HTTPDATE    
  X  
C     UTCDIFF BEGSR                
C *     --------------------------------------
C *     Datum und Zeit in UTC umrechnen
C *     --------------------------------------
C     DATETIME SUBDUR UTCOFFSET:*S DATETIME2     77  
C   77   MOVE DATETIME DATETIME2            
C          
C *     --------------------------------------
C *     Zu altes Datum ins Jahr 1970 bringen
C *     --------------------------------------
C     DATETIME2 IFLT EPOCH              
C       MOVE EPOCH DATETIME2            
C       ENDIF                
C       ENDSR                
C          
  X * *MAIN* EXSR HTTPDATE    
  X  
C     UTCDIFF7 BEGSR                
C *     --------------------------------------
C *     Datum und Zeit von UTC umrechnen
C *     --------------------------------------
C     DATETIME2 ADDDUR UTCOFFSET:*S DATETIME     77  
C   77   MOVE DATETIME2 DATETIME            
C          
C *     --------------------------------------
C *     Zu altes Datum ins Jahr 1970 bringen
C *     --------------------------------------
C     DATETIME IFLT EPOCH              
C       MOVE EPOCH DATETIME            
C       ENDIF                
C       ENDSR                
C          
C     *PSSR BEGSR                
C       ENDSR '*CANCL'              
C          
C     *ENTRY PLIST                
C       PARM   HTTPDATE            
C       PARM   DATETIME            
C       PARM   DATETYPE            

203 ms | Contact | Information | Aibo-Bar © 2005-2024