diff --git a/Sonderuebung/WiSe24-25/SU04_2024_11_12_Unterprogramme_Testen-Debuggen/02_schaltjahre.f95 b/Sonderuebung/WiSe24-25/SU04_2024_11_12_Unterprogramme_Testen-Debuggen/02_schaltjahre.f95
new file mode 100644
index 0000000000000000000000000000000000000000..c05a0b19ba6972be9db5597ff81907aa5096bd54
--- /dev/null
+++ b/Sonderuebung/WiSe24-25/SU04_2024_11_12_Unterprogramme_Testen-Debuggen/02_schaltjahre.f95
@@ -0,0 +1,43 @@
+program schaltjahre
+    implicit none
+
+    integer :: start, ende, i
+
+    
+    write(*,*) "Es werden alle Schlatjahre innerhalb von einem Intervall berechnet."
+    write(*,*) "Gebe die Ober- und Untergrenze an!"
+
+    do !test ob eingegbene daten korrekt
+        read(*,*) start, ende
+        if (start <= ende .and. start >= 0) then
+            if (ende - start <= 2000) then !begrenzung lƤnge des intervalls
+                exit
+            else
+                write(*,*) "Fehler: Das Intervall ist zu groƟ. Bitte max. 2000 Jahre lang."
+            end if
+        else
+            write(*,*) "Fehler: Untergrenze ist groesser als Obergrenze oder Grenzen sind negativ."
+        end if
+        write(*,*) "Gib die Unter- und Obergrenze erneut ein!"
+    end do
+
+
+    ! berechne erstes potenzielles schaltjahr (teilbar durch 4)
+    if (MOD(i,4) /= 0) start = start + 4 - MOD(start,4)
+
+    if (start <= ende) then 
+        write(*,*) "Die folgenden Jahre sind Schaltjahre:"
+
+        ! Teste alle potenziellen Schaltjahre im Intervall
+        do i = start, ende, 4 ! wegen step=4 sind alle i durch 4 teilbar
+
+            if ( .NOT. MOD(i, 100) == 0 .OR. MOD(i, 400) == 0) then ! nicht durch 100 teilbar oder durch 400 teilbar
+                write(*,*) i
+            end if
+        
+        end do
+    else
+        write(*,*) "Es gibt keine Schaltjahre im gegebenen Intervall."
+    end if
+
+end program schaltjahre
\ No newline at end of file