Peter Kellberg. Det vidste du ikke om et EG projekt!



Relaterede dokumenter
Peter Kellberg. Rundt om Danmarks Statistiks makroer. Design, Standardisering, Teknik

Anvendelse af Model- View koncept i SAS Stored Processer

Mænd, Mus og Metadata

Google Maps og SAS/GRAPH software

Jobafvikling i batch under Windows

Deltag i en quiz: Test din viden i SAS -programmering

PUT og INPUT funktionerne

Dynamiske Web-applikationer i SAS-portalen

Klog på SAS seminar, december 2013 Hvordan skjules password i loggen ved brug af macro, Svend Bang, Københavns Universitet

Programmering C RTG

Hvorfor SAS Kort intro til SAS

PROC TRANSPOSE. SAS-tabellen - hensigtsmæssig lagring af data. Copyright 2011 SAS Institute Inc. All rights reserved.

Kort intro til SAS. Efterår Janne Petersen Judith L Jacobsen Lene Theil Skovgaard

SAS-programmering med sikkerhedsnet: FUTS (Framework for Unit Testing SAS programs)

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net

Træningsaktiviteter dag 3

Lineær og logistisk regression

Lær Python - Dag 3, modul 1 Læse og skrive filer

Delfi Connect. Bruger vejledning 1. TILSLUTNING INSTALLATION MENUSTRUKTUR...4

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net

Instruktioner i installation og afinstallation af Windows PostScript- og PCLprinterdrivere

OrCAD Capture TCL IDE med Eclipse

en fælles opsætning af SAS som grundlag for samarbejde. Jesper Michelsen, Risikostyring Modeller

Introduktion til SAS macro language

INTRODUKTION TIL SAS

Tech College Aalborg. HomePort. Projekt Smart Zenior Home Guide til udvikling af nye adaptere til HomePort

Manual for installering og brug af IE-spyad af Anette B. Overgaard

Sådan bruges den eksterne CD-brænder med DirectCD Side 1 af 6

Velkommen til Electro Energy s Prisprogram

Hent filoplysninger fra billeder og filer

DST SIKKERHED OG ANVENDELSE

Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2. Windows XP/Vista Home

Brug af Archive-funktion i SportIdent (baseret på version 10.3 af SI-programmerne)

Microsoft Outlook 2010

Man indlæser en såkaldt frequency-table i SAS ved følgende kommandoer:

Det kunne godt se ud til at ikke-rygere er ældre. Spredningen ser ud til at være nogenlunde ens i de to grupper.

MPH specialmodul i epidemiologi og biostatistik. SAS. Introduktion til SAS. Eksempel: Blodtryk og fedme

For at du kan downloade og installere SAS version 9.13, skal du have mindst 6.3 GB ledig plads

Navision Stat (NS 9.3)

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Exceptions i Delphi. Try except

Umbraco installationsvejledning

Installation af web-konfigurationsprogrammer

DIVISIONSMATCHBEREGNING VERSION 1.07

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

Guide til opdatering af Navision Stat med ny funktionalitet - nye objekter, datakonvertering, automatisk indlæsning af datafiler.

ØVELSESGANG 1A EDB PROGRAMMER SAS SOM PROGRAMMERINGSSPROG

Brug af Archive-funktion i SportIdent (baseret på version 10.3 af SI-programmerne)

ODS measured tagset til RTF er smart og kan tilpasses

Projekt DATA step view

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

Introduktion til ant. Denne artikel beskriver Apache ant, som er et værktøj til at builde Java applikationer med.

DST SIKKERHED OG ANVENDELSE

Nintex Workflow UK/DK

java -classpath.;xercesimpl.jar;xercessamples.jar;c:\java\java\lib\classes.zip sax.counter -v -s -f -t telefonliste.xml

Dokumenter. Sider. efact CMS manual v. 1.0

Du har nu en genvej på dit skrivebord hen til den mappe hvor dine filer med bøgerne kommer til at ligge, den virkelige sti = c:\bøger.

Installere Windows Custom PostScript- eller PCL-printerdrivere

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer.

Hvad er en terminalserver?

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Schedulering af SAS job i MS Task Scheduler, som sender med log og statuskode ved fejl

Brugernavnet og kodeordet til databasen kan du evt. finde i /webtrees/data/config.ini.php

Installere Windows Custom PostScript- eller PCL-printerdriverne

OPC Access 3.0 opdatering via Stored Procedure

Indhold. Jennie Mathiasen. Google Drev

GIS. Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet

Kapitel 4 Løkker i C#

Download og print af geodatastyrelsens kort (vejledningen er meget detaljeret og skrevet med tanke på en ikke rutineret PC bruger)

Finanstilsynets indberetningssystem. Vejledning til Regnearksskabelonerne

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

Flash Logic Free CMS. Manual og brugervejledning

En Kort Introduktion til Oracle

Udstilling af forvaltningsdata til Min Lederside, Målvinduer

GIS indlæsning af kreditorer og betalingsform. Brugervejledning 1.0

Hurtigt i gang med SAS University Edition Anders Milhøj

dpix til Word Indholdsfortegnelse

Statistik FSV 4. semester 2014 Holdundervisning Uge 1: 4. februar Introduktion til Stata

Kursusarbejde 2 Grundlæggende Programmering

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Processer og koordinering. dopsys 1

Introduktion Med installation af NavisionStatUtility, styrkes sikkerheden i indlæsningen af Excelfiler til Navision Stat via GIS-integrationen.

Sådan opretter du en elektronisk aflevering

SAS formater i Danmarks Statistik

"# $%$ " # $ % $ $ " & ( ) *+!,! Sum_Cost >= 5000SirName = Beltov Continue = %!- + ( ( - True) Continue *! If Antal <= 20 Then EnhedsOmk = 1.

Windows XP - generelt...1. <Start> - venstre menu... 6 <Start> - Alle programmer... 7 Tilbehør - Spil... 7

Flotte mosaikbilleder

1 Indlæsning af script

Egenudviklet promotion tool mellem forskellige SAS Visual Analytics miljøer.

Dan dine egne SAS - funktioner med PROC FCMP

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Velkommen på kursus hos Microworld

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Harald Michalsen og Lasse Storr-Hansen

DE FRIE SKOLERS EDB-BRUGS a.m.b.a. Side 1

ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse

Dato Version Beskrivelse Applikation version Indsættes under CSC s dokstandard. Reference Forfatter Godkender. Brian Helmer Nielsen

Transkript:

Peter Kellberg Det vidste du ikke om et EG projekt! SAS Forum 2010

Spørgsmål? Kan tanker om sex få én til at nyse? Ja! Journal of the Royal Society of Medicine

Det vigtigste først Er sex overhovedet relevant for en SAS-udvikler? 1) Ja 2) Nej 3) Sex, hvad er det?

Hvad betyder det ord egentlig? Simplicity EXclusion www.kenrockwell.com

Hvad betyder det ord egentlig?

Hvad betyder det ord egentlig?

Hvad betyder det ord egentlig? Det er variabel nr. 2 i SASHELP.CLASS

Rotating plot

Nyt navn på Server Context EG 4.1 (SAS 9.1.3) EG 4.2 (SAS 9.2) SASMain SASApp

Fodaftryk fra SASMain i EG 4.1

At åbne et EG 4.1 projekt i EG 4.2

At åbne et EG 4.1 projekt i EG 4.2

At få rettet SASMain til SASApp

At få rettet SASMain til SASApp

At få rettet SASMain til SASApp

Alternativ måde Migration Wizard C:\Programmer\SAS\EnterpriseGuide\4.2\MigrationWizard.exe

Migration Wizard

Migration Wizard

Migration Wizard

Migration Wizard

Migration Wizard

Migration Wizard

Migration Wizard

Efter Migration Wizard SASMain erstattet med SASApp Er nu i EG 4.2 format

At lede efter SASMain...

Åbenbaringen

Et EG projekt er en ZIP-fil!!

XML-filen

Fra AHA til idé En EGP-fil er en ZIP-fil som indeholder en XML-fil med alle oplysninger Vi kan udpakke XML-filen og rette i den, det jo er bare en tekstfil Vi kan lægge den tilbage igen og så kan man køre i SAS 9.2

Problemstillinger At kunne få en oversigt over EGP-filer SAS Udføre en systemkommando (DIR) Vi skal kunne hive ud/lægge ind fra en ZIP-fil SAS Et eksternt program WZUNZIP.EXE WZZIP.EXE Rette i en fil Direkte (SHAREBUFFERS) Danne en ny udgave

Få en oversigt over EG-filer (SAS) DOPEN åbn en mappe DNUM antal elementer (filer, undermapper) DREAD navn på element DCLOSE når vi er færdige med mappen

Få en oversigt over EG-filer (SAS) %let rc=%sysfunc(filename(mappe,h:\)); /* opret et fileref */ %let did=%sysfunc(dopen(&mappe)); /* åbn mappe */ %let antmembers=%sysfunc(dnum(&did)); /* find antal elementer */ %do i=1 %to &antmembers; /* gå mappen igennem */ %let memname=%sysfunc(dread(&did,&i)); /* find navnet */ %put memname=&memname; %end; %let rc=%sysfunc(dclose(&did)); /* luk adgang til mappe */ Det bliver for bøvlet især rekursivitet (undermapper)

Få en oversigt over EG-filer (DIR) c:\> dir /s h:\eg\*.egp

Få en oversigt over EG-filer (DIR) H:\>dir /s "h:\test det nu\*.egp" Disken i drev H er FS1FCNAS1 Diskens serienummer er 91C8-4F01 Indhold af h:\test det nu 26-01-2010 11:41 173.104 æøåæøå.egp 1 fil(er) 173.104 byte Indhold af h:\test det nu\bettina tradsborg 01-02-2010 16:56 258.294 Produkter.egp 1 fil(er) 258.294 byte Antal filer i alt: 2 fil(er) 431.398 byte 0 mappe(r) 462.208.733.184 byte ledig

Få en oversigt over EG-filer (DIR) Hvordan fanger man så outputtet? c:\> dir h:\eg\*.egp > c:\temp\dirlist.txt Man kan så indlæse tekstfilen i SAS

Få en oversigt over EG-filer (DIR) DATA Step Funktioner CALL SYSTEM SYSTEM Makro sætning %SYSEXEC SAS sætning X-statement SAS kommando X-kommando

Vigtige options XCMD XMIN XSYNC NOXWAIT The X Command is valid in this SAS session X-commands launch in a minimized nonactive state. X-commands execute synchronously. X-commands do not wait for 'exit' before returning to SAS.

Unnamed pipe Det er nemmere, end det lyder Det blinker ikke så meget Outputtet kan indlæses direkte i et DATA Step Er uafhængig af disse options: (NO)XWAIT, (NO)XSYNC, (NO)XMIN

Unnamed pipe filename dirlist pipe "dir /s h:\*.egp"; H:\>dir /s "h:\test det nu\*.egp" Disken i drev H er FS1FCNAS1 Diskens serienummer er 91C8-4F01 Indhold af h:\test det nu 26-01-2010 11:41 173.104 æøåæøå.egp 1 fil(er) 173.104 byte Indhold af h:\test det nu\bettina tradsborg 01-02-2010 16:56 258.294 Produkter.egp 1 fil(er) 258.294 byte Antal filer i alt: 2 fil(er) 431.398 byte 0 mappe(r) 462.208.733.184 byte ledig

Unnamed pipe filename dirlist pipe "dir ""h:\enterprise Guide\*.egp"" "; data EG_oversigt; retain path ; infile dirlist length=reclen ; input line $varying256. reclen ; if reclen = 0 then delete ; if scan(line, 1,' ') = 'Indhold' then path=substr(line,13); if substr(line,2,6) = 'Disken' or scan( line,1,' ') = 'Antal' or scan( line,2,' ') = 'fil(er)' or scan( line,2,' ') = 'mappe(r)' or scan( line,3,' ') = '<DIR>' or scan(line, 1,' ') = 'Indhold' then delete ; filnavn=substr(line,37); drop line; run; Æ, Ø og Å? encoding=pcoem865

Unnamed pipe filename dirlist pipe "dir bla bla"; data _null_; infile dirlist length=reclen ; file &fileref; input line $varying256. reclen ; put line $varying256. reclen; run; Æ, Ø og Å? encoding=pcoem865 data _null_; infile &fileref encoding=pcoem865 length=reclen ; input line $varying256. reclen ;...... run;

Unnamed pipe filename pipecmd pipe del /q h:\test\*.egp ; data _null_; infile pipecmd; input; run; En kommando uden output

Unnamed pipe

Forberedelse til systematik counter+1; call symputx(cats('path',counter),path); call symputx(cats('filename',counter),filnavn); call symputx('counter',counter); PATH1 H:\TEST FILENAME1 LEDIGE.EGP PATH2 H:\TEST FILENAME2 FINANS.EGP...... %do i=1 %to &counter; %egkonvert_doit(eg_folder=&&path&i, eg_file=&&filename&i); %end;

Forberedelse til systematik &&filename&i && filename &i &filename3 Beskæftigede.egp

Udpakning af XML-filen SASZIPAM access method filename zipfil saszipam 'C:\temp\test.zip'; Bruge et WINZIP program WZUNZIP WZZIP (kommandolinje baserede)

Udpakning af XML-filen %let UNZIP_FOLDER=%sysfunc(pathname(WORK)); %let UNZIPEXE=\\nas2\apps\sas server\winzip\wzunzip.exe; /* Dan UNZIP CMD-fil */ data _null_; file "&UNZIP_FOLDER\unzip.cmd"; put """&UNZIPEXE"" -o ""&EG_FOLDER\&EG_FILE"" ""&UNZIP_FOLDER"" PROJECT.XML" ; run; /* Udfør UNZIP CMD-fil */ filename _zip PIPE "&UNZIP_FOLDER\unzip.cmd"; data _null_; infile _zip; input; run;

Har dette EG projekt brug for at blive rettet? /* Find ud af, om der skal rettes (ordet SASMain findes) */ %let NeedsConversion=N; data _null_; infile "&UNZIP_FOLDER\PROJECT.XML" lrecl=3000 ENCODING="UTF-16"; input; /* led efter sasmain og ignore case */ if FIND(_infile_,'sasmain','i') ne 0 then do; call symputx('needsconversion','y'); stop; end; run;

OK det skal rettes! Hm!

OK det skal rettes! /* Opret et SAS/datasæt med indholdet */ data xml_utf16; length linje $3000; infile "&UNZIP_FOLDER\PROJECT.XML ENCODING="UTF-16 lrecl=3000 missover pad; input linje $char3000.; %erstatord(var=linje,soeg=sasmain,erstat=sasapp); run; $CHAR Undgå venstrestilling af tekst

OK det skal rettes! %macro erstatord(var=,soeg=,erstat=); %* Filosofien er først at erstatte søgeordet med et soltegn efterfulgt af blanktegn, så længden passer med søgeordet fx En lille historie om Lille Claus bliver til En historie om Claus ; Herefter lader vi TRANWRD om at erstatte. Så slipper vi for bøvlet med skubning af tekst (hvis erstat ordet er længere end soeg ordet og omvendt) findindex_=1; findpos_=find(&var, "&soeg",'i',1); do while (findpos_ ne 0); substr(&var,findpos_,length("&soeg"))=" "; findindex_+1; findpos_=find(&var, "&soeg",'i',findindex_); end; _soegcopy_="&soeg"; * _soegcopy_ får samme længde som &soeg; _soegcopy_=" "; * _soegcopy_ bliver et soltegn efterfulgt af blanke; &var=tranwrd(&var,_soegcopy_,"&erstat"); drop findpos_ findindex soegcopy_; %mend;

OK det skal rettes! /* Overskriv XML filen med det rettede indhold */ data _null_; set utf16fil end=slut; length char $1; file "&UNZIP_FOLDER\PROJECT.XML ENCODING="UTF-16" recfm=n; do i=1 to lengthn(linje); char=substr(linje,i,1); put char $1.; end; run; if not slut then do; put '0D'x; put '0A'x; end; RECFM=N Binær læsning/skrivning

Sharebuffers /* Ret XML filen in-place */ data _null_; infile "&UNZIP_FOLDER\PROJECT.XML" ENCODING="UTF-16" lrecl=3000 sharebuffers; file "&UNZIP_FOLDER\PROJECT.XML"; run; input; %erstatord(var=_infile_,soeg=sasmain,erstat=sasapp);

Så skal XML-filen ind i EGP-filen /* Dan ZIP CMD-fil */ data _null_; file "&UNZIP_FOLDER\zip.cmd"; put """&ZIPEXE"" -a ""&EG_FOLDER\&EG_FILE" ""&UNZIP_FOLDER\PROJECT.XML"" " ; run; /* Udfør ZIP CMD-fil */ filename _zip PIPE "&UNZIP_FOLDER\zip.cmd"; data _null_; infile _zip; input; run;

Så skal XML-filen ind i EGP-filen /* Dan ZIP CMD-fil */ data _null_; file "&UNZIP_FOLDER\zip.cmd"; put """&ZIPEXE"" -a ""&EG_FOLDER\&EG_FILE" ""&UNZIP_FOLDER\PROJECT.XML"" " ; run; /* Udfør ZIP CMD-fil */ data _null_; call system("&unzip_folder\zip.cmd"); run;

Skal alle så have WZZIP/WZUNZIP? %let UNZIPEXE=\\nas2\apps\sas server\winzip\wzunzip.exe; %let ZIPEXE=\\nas2\apps\sas server\winzip\wzzip.exe;

Hvad sker der nu?

Hvad er vores makro god til? God til at foretage standardiserede rettelser Kan ordne en mappe + evt. undermapper

Perspektiv? Du kan rette hvad som helst i en EGP-fil Det skal gøres med sikker hånd!

Spørgsmål? pke@dst.dk