Berechnung der Arbeitstage

Ähnliche Dokumente
Hallo Jessi, wenn ich das. DATA aufg3_b; vari='<.0001'; IF &wil_two_test. le vari THEN pwert=0.0001;

Zeilen in SAS-Datensatz einfügen

Alter berechnen mit Base SAS

Wie kann ich die Ausgabe als Excel speichern?

Bestimmungsmethoden für die Generierung einer Zeitdimension

QMF Tabelle Q.OBJECT_DATA in DB2

Einlesen von Textdateien mit sehr langen Zeilen

Kreuztabelle als Data-Set so wie aus proc tabulate

Auslesen von SAS Systeminformationen über die aktuelle Log- Ausgabe

rechtsbündige Leerzeichen mit einlesen im Datastep

Fehlermeldung, wenn Anzahl der %do der %end entspricht - was läuft falsch?

viele ähnliche Datensätze automatisch einlesen

Ermittlung der übereinstimmenden Variablen (-Namen) zweier Datasets

Dynamisch Makros aufrufen

IMPORT / EXPORT Access

Datensicherungskalender

Anhang zur Frage Data statement und Proc Statement

Exportieren in excel sheets

SPDS-Problem - proc summary auf View mit by-variable - Sortierung wird verlangt

SAS Daten per Remote SUBMITE vom Großrechner selektieren,

ÖFFNUNGSZEITEN MUSEEN/GEDENKSTÄTTEN OSTERN, MAIFEIERTAG, HIMMELFAHRT, PFINGSTEN 2012

News Artikel Foren Projekte Links Über Redscope

Datensicherungskalender

Achsenbeschriftung um 90 drehen

Zebra-Fahrschule Axel Reichenberger

Wie überprüfen, ob eine Datei existiert?

PROC GCHART HBAR Zeilenumbruch in Achsenbeschriftung

Excel sheet input / Zufallsgenerator/ Excel sheet output

Theorieplan Januar 2014

Januar Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag

Failed to transcode data from U_UTF8_CE to U_LATIN9_CE?!

Abgabetermine zur Intrahandelsstatistik 2013 und 2014

Januar Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag

Montag, 14.3 Dienstag, 15.3 Mittwoch, 16.3 Donnerstag, 17.3 Freitag, 18.3 Samstag, 19.3 Sonntag, Programmiertes Entwerfen 1 KG1 Götte

Abgabetermine zur Intrahandelsstatistik 2016/17

Theorieplan Januar 2015

Zeitzuschläge nach Anlage 6a zu den AVR im Jahr 2016

RefArbR Zeitzuschläge 2015 Übersicht

Makro zum Auffinden mehrfach vergebener Schlüsselnummern

Januar Mo. Di. Mi. Do. Fr. Sa. So.

Zeitzuschläge nach Anlage 6a zu den AVR im Jahr 2017

Januar Woche 5. Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag

ratgeber Brückentage 2016 Clever planen - Auszeit sichern!

Feiertage in Marvin hinterlegen

Arrays im DATA-Step - wann und warum?

Programme laufen im Programm-Editor, aber nicht im Enterprise Guide?

Zugriff aus Oracle via Proc SQL: Performanceprobleme

2015 Januar 1. Donnerstag Neujahr. Freitag Berchtoldstag. Samstag Sonntag Montag V W' 2

Tariftabellen Urlaub [2] Anlagen 3, 3a [3 8] Anlage 30 [9] Anlagen 31 [10 15] Anlage 32 [18 21] Bereitschaftsdienstentgelt.

Der SAS DataStep und die Prozedur SQL Cellent Finance Solutions GmbH Seite: 1

Import von XLS-Dateien aus einem Ordner in eine SAS-Datei

BOKU-Zeiterfassung für Allgemeines Personal

Berechnung von Arbeitstagen in Zeitintervallen Nutzerdefinierte Funktionen mit PROC FCMP vs. MAKRO-Lösung

Januar Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag

BOKU-Zeiterfassung für Allgemeines Personal

Tariftabellen Stand: 12. April Für die Regionen Nord/Nordrhein- Westfalen/Mitte/ Baden-Württemberg/Bayern

Modul 122 VBA Scribt.docx

Überprüfung auf Normalverteilung und anschließend Test auf Signifikanz

ArbZ Gesetz über die Sonntage und Feiertage (Feiertagsgesetz FTG)

Informatik II, SS 2014

1.5 Berechnung von Rangzahlen

Chancen-Planer AKADEMIE. Bodo Schäfer. Meine persönlichen Daten: Anschrift. Telefon beruflich. Bankverbindung 1. Bankverbindung 2.

VHDL Verhaltensmodellierung

SelectLine Auftrag. ab Version 13. Beschreibung zur Paketverfolgung

Standard-Lastprofile (Gas)

Aufteilung (und späteres separates Einlesen) einer großen Access- Tabelle anhand eines Kriteriums

Feiertagsangebot 2017

Nachdem Sie die Datei (z.b. t330usbflashupdate.exe) heruntergeladen haben, führen Sie bitte einen Doppelklick mit der linken Maustaste darauf aus:

Januar Donnerstag Freitag Samstag Sonntag Neujahr Ferien Ferien. 17:15 FinPersImm. 19:30 StadtGrün

Rund um die Feiertage in russisch- bzw. deutschsprachigen Ländern

Kalenderrechnung. Einleitung

Mein Kalenderbüchlein

HNO-Notdienstkalender 2015

Microsoft Visio 2007-Programmierung

ANLEITUNG. Dienstplan im Excel - Schema

Änderungen im Vertrags-Manager

EXCEL VBA Cheat Sheet

THEMA: SAS STORED PROCESSES ALS WEB-/REST-SERVICE AUFRUFEN" BRUNO MÜLLER

BERTSCH Dampftafel und Prozesse Excel-Makros FAQ

Nachname:... Vorname:... MatrNr.:... Klausur PR2. Erstellen Sie eine Struktur für eine Komplexe Zahl mit den Elementen real und imag vom Typ double.

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

TYPO3 Commerce Extension

Primärspannungsmessungen mit der. CSIRO Triaxialzelle

4-Kanal-Analoglogger für die Regelungstechnik

.commercers Extension Anleitung Inventur Manager

DYNAMISCHE SEITEN. Warum Scriptsprachen? Stand: CF Carola Fichtner Web-Consulting

Laufzeitoptimierung bei der Verknüpfung großer Datenmengen Ein Vergleich zwischen MERGE und JOIN

RAHMENTERMINKALENDER 2016/2017.

Schlüsselfelder für Grundbuchdaten. Spezifikation für GB-Softwarehersteller

2016 Januar 1. Freitag 1 5 # Neujahr. 2 6 # a Berchtoldstag. Sonntag 3 7 # Montag W' 1. Dienstag Mittwoch Heiligen drei Könige

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN?

Die App der Ärzte Zeitung

Das Beste aus zwei Welten

Transkript:

News Artikel Foren Projekte Links Über Redscope Join List Random Previous Next Startseite Foren Allgemeine Fragen zu SAS Berechnung der Arbeitstage 30 July, 2010-15:00 Hallo zusammen, hat jemand aus dem Forum eventuell ein Amkro zur Hand, mit man die Anzahl der Arbeitstage zwischen 2 Datümern ermittlen kann? (Herr Kneilmann vielleicht ;-) ) Vielen Dank und viele Grüße Foren: Allgemeine Fragen zu SAS Jeder Tag ist ein Arbeitstag leider habe ich (früher wir, aber seit fast einem Jahr nur noch ich :-( ) dazu keinen Makro und auch überhaupt keinen Lösungsansatz. Für mich ist das Problem grundsätzlicher Natur: Was ist ein Arbeitstag? Ist der Samsatg ein Arbeitstag? Was ist mit den Feiertagen? Insbesondere den nicht bundeseinheitlichen? Was ist mit den Feiertagen (europäischen) Ausland? 2 August, 2010-08:32 HansKneilmann Wir sind bekanntlich ein Versandhandel mit fast 20 Filialen im Bundesgebiet, die früher auch Samstags geöffnet waren (also wäre Samstag ein Arbeitstag). Ausserdem haben wir seit ewig den Online-Shop Schäfer Sohp, der ist sowiesso rund um die Uhr offen, folglich kommen jeden Tag Belege ins DWH (also wäre auch der Sonntag ein Arbeitstag). Ausserdem haben wir Vertretungen im europäischen Ausland, insbesondere in AT und CH, dadurch ist auch am Feiertag keine Ruhe (also wäre auch fast jeder Feiertag ein Arbeitstag). Für das DWH vom Schäfer Shop gibt es keinen Arbeitstag, weil jeder Tag ein Arbeitstag ist. Tut mit leid, dass ich nicht weiterhelfen konnte. Ein Lösungsansatz Hallo Herr Kneilmann, hallo Herr Bloch, 2 August, 2010-15:18

da habe Sie natürlich völlig recht, was ist überhaupt ein Arbeitstag. Ich habe mir das ganze mal anhand der bundeseinheitlichen (fettgedruckt) Feiertage inkl. Heiligabend und Sylvester überlegt und Samstag/Sonntag als arbeitsfrei definiert. Die Feiertage unterteilen sich in datumsfixe (z.b. Neujahr) und solche deren Datum sich am Ostersonntag orientieren und somit im Prinzip "mondfix" sind. Letztere kann man mit der Gauß'schen Osterformel ermitteln bzw. mit einer ergänzten Formel nach Lichtenberg (s.a. Wikipedia: hier). Anbei mein Ansatz, über Format gelöst: data feiertage(keep=start fmtname label type); length start $10; retain fmtname 'feiertg' type 'c' label '0'; /* Datumsfixe Feiertage inkl. Heiligabend und Sylvester /* Neujahr, Maifeiertag, Tag der dt. Einheit, Heiligabend, 1.+2. Weihn array _feststehend(7) $ _temporary_ ('0101' '0105' '0310' '2412' '2512 /* Datumsvariable bundeseinheitliche Feiertage, rel. zu Ostersonntag i /* Karfreitag, Ostermontag, Christi Himmelfahrt und Pfingstmonatg. array _beweglich(4) _temporary_ (-2 1 39 50); format start; do Jahr = 1990 to 2100; /* Bundeseinheitliche feststehende Feiertage inkl. Heiligabend und S do i = 1 to 7; monat=input(substr(_feststehend(i),3,2),2.); tag=input(substr(_feststehend(i),1,2),2.); start=put(mdy(monat,tag,jahr),ddmmyyp10.); /*************** /* S.a. Wikipedi /* nach Lichtenb /*-------------- A=mod(Jahr,19); /* Mondparame K=floor(Jahr/100); /* Säkularzahl M=15+floor((3*K+3)/4)-floor((8*K+13)/25); /* Säkulare Mond D=mod(19*A+M,30); /* Keim für den S=2-floor((3*K+3)/4); /* Säkulare Sonn R=floor(D/29)+(floor(D/28)-floor(D/29))*floor(A/11); /* Kalendarische OG=21+D-R; /* Ostergrenze SZ=7-mod(Jahr+floor(Jahr/4)+S,7); /* Erster Sonnta OE=7-mod(OG-SZ,7); OS=OG+OE; /* Osterentfernu /* Ostersonntag /*************** if OS>31 then do; tag=os-31; monat=4; do j = 1 to 4; start=put(intnx('day',mdy(monat,tag,jahr),_beweglich(j)),ddmmyyp10 else do; tag=oe; monat=3; do j = 1 to 4; start=put(intnx('day',mdy(monat,tag,jahr),_beweglich(j)),ddmmyyp10

start='other'; label='1'; proc format cntlin=feiertage lib=work; proc format; value wtag 1 = '0' /* Sonntag */ 7 = '0' /* Samstag */ other = '1' /* Wochentage */ ; data test; input von bis; informat von bis ddmmyy10.; cards; 01.12.2010 31.12.2010 01.01.2011 28.02.2011 01.04.2011 01.05.2011 ; data arbeitstage(keep=von bis arbeitstage); set test; arbeitstage=0; format von bis ddmmyyp10.; do i = von to bis; arbeitstage=arbeitstage+input(put(put(i,ddmmyyp10.),$feiertg.),1.)*i Viele Grüße Super so wie in Ihrem Beitrag oben hätte ich auch den Arbeitstag definiert. 18 August, 2010-07:53 HansKneilmann Das ist ja eine schöne Lösung und sogar komplett mit der Feiertags-Lösung. Die werde ich mir auf jeden Fall gut aufheben. Die beweglichen Feiertage waren schon mal Thema im Redscope: Siehe Kalenderfrage zu Ostern und in der Redscope-Makro-Sammlung unter org.redscope.hanskneilmann.*

Korrektur meines Lösungsansatzes 2 August, 2010-17:14 es hat sich ein Fehler unmittelbar nach der Ermittlung des Ostersonntages eingeschlichen. Es muss heißen: else do; tag=os; /* nicht tag=oe */ monat=3; do j = 1 to 4; start=put(intnx('day',mdy(monat,tag,jahr),_beweglich(j)), @Hr. Kneilmann: Ich hatte zunächst auch bei Ihnen in der Makro-Sammlung nachgeschaut. Ich war allerding zu sehr auf den Begriff "Arbeitstag" fixiert. Viele Grüße Fehler in der Fehler-Korrektur 4 August, 2010-09:35 HansKneilmann irgendetwas stimmt nicht mit der neuen Ermittlung des Ostersonntages! Ich habe die Korrektur bei mir nachgezogen und bekomme einen Format-Fehler: 23141 proc format cntlin=feiertage lib=work; ERROR: This range is repeated, or values overlap: 01.05.2008-01.0 23142 WARNING: RUN statement ignored due to previous errors. Submit QUI Das Datum 01.05.2008 ist tatsächlich doppelt im data set feiertage, also Fehler, oder? Ein Vergleich der Daten alt und neu zeigt am Beispiel des Jahres 2008 deutliche Unterschiede: /* alte Version: 28.02.2008 feiertg c 0 02.03.2008 feiertg c 0 09.04.2008 feiertg c 0 20.04.2008 feiertg c 0 01.05.2008 feiertg c 0 neue Version: 21.03.2008 feiertg c 0 24.03.2008 feiertg c 0 01.05.2008 feiertg c 0 01.05.2008 feiertg c 0 12.05.2008 feiertg c 0 */ Wo liegt der Fehler?

P.S.: Gefunden habe ich den Fehler, weil mir mittlerweile eine sinnvolle/nützliche Anwendungsmöglichkeit eingefallen ist :-) Himmelfahrt 2008 Hallo Herr Kneilmann, 4 August, 2010-10:00 Lutz Ritter ohne den Code von Herrn Hornung analysiert zu haben, denke ich daß die Berechnung korrekt ist. Der Termin von Himmelfahrt 2008 fiel tatsächlich auf den 01. Mai. Was die 2 Einträge für diesen Tag erklärt. Abhilfe für Ihr Problem schafft somit ein kleines proc sort data=feiertage nodupkey ; by start ; quit ; Lutz Ritter Hallo zusammen, danke für die 4 August, 2010-10:51 HansKneilmann Hallo zusammen, danke für die Klarstellung, dass alles korrekt ist. So ein proc sort... nodupkey einzufügen war nicht mein Problem. Die Unsicherheit, ob das Programm wirklich korrekte Werte liefert, das war mein Problem (wobei ich mir das nicht wirklich vorstellen konnte...) Danke für den netten Tipp und vor allem Danke für die (beiden) Klarstellung(en), dass der 01.05.2008 tatsächlich doppelt auftreten darf. Himmelfahrtproblem Hallo Herr Kneilmann, 4 August, 2010-10:18 die Berechnung stimmt in der Tat, dazu ein Zitat aus Wikipedia: "Im Jahre 2008 fiel Christi Himmelfahrt mit dem Feiertag Tag der Arbeit (1. Mai) zusammen. Diese Konstellation tritt aber nur sehr selten ein, zuvor zuletzt im Jahr 1913 und nach 2008 erst wieder 2160." Das Problem sollte also zu unseren Lebzeiten nur im Jahr 2008 (s.a. Kommentar von Lutz Ritter) auftauchen ;-) Viele Grüße

Separate Tabelle mit arbeitsfreien Tagen 2 August, 2010-10:49 Frederik_Bloch das Problem liegt, wie Herr Kneilmann sagte, in der Definition, da ein Arbeitstag für jeden anders ist. Mir ist bislang auch nur die Variante bekannt, eine separate Tabelle zu führen, in die manuell für jedes Jahr die arbeitsfreien Tage eingetragen werden und gegen die dann abgeglichen wird. Frederik Bloch