Anvendelse af Model- View koncept i SAS Stored Processer



Relaterede dokumenter
Dynamiske Web-applikationer i SAS-portalen

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

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

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

Google Maps og SAS/GRAPH software

3. PROJEKT, 2 SEMESTER

ODS measured tagset til RTF er smart og kan tilpasses

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Dan dine egne SAS - funktioner med PROC FCMP

PUT og INPUT funktionerne

Eksamen, DSDS, efterår 2007

Dokumentering af umbraco artikeleksport:

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

Byggebasen Javascript

Web- og serverprogrammering

Kom i gang med SAS STPbaserede

Mænd, Mus og Metadata

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

HTML, PHP, SQL, webserver, hvad er hvad??

De skjulte input typer:

Programmering i Javascript

Views etc. Databaser

INTRODUKTION TIL SAS

Anvend dine SAS -programmer som SAS Stored Processes

Hack of the Month opgave 2

VÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING

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

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

Introduktion til SAS macro language

Tagwall med Php & MySQL

Decentral forecasting/ planlægning i et callcenter

Moderne SAS-programmering på webben med SAS Studio. Georg Morsing SAS Institute

OPC ACCESS HEARTBEAT 1

Sporbarhed og Rapportering i Quality Center. Kim Stenbo Nielsen NNIT Application Management Services

Open Data. Geo Fyns Dataportal

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder.

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

Sådan kan du sende data fra din egen hjemmeside til JitBesked via en HTML-JDF.

Jobafvikling i batch under Windows

ASB signatur. ASB signatur. Vejledning til opsætning af signatur IKT - Februar 2008

Hvorfor SAS Kort intro til SAS

PHP guide af Daniel Pedersen

Interaktionsudvikling

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

Eksamen, DSDS, efterår 2008

Arkitektur for begyndere

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere

Programmering I Java/C#

JavaScript. nedarvning.

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning..

Datatekniker med programmering som speciale

Procesbeskrivelse - Webprogrammering

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

Ordbøgerne.dk. Navne: Andreas Foldager og Rasmus Bjerring Pedersen Fag: IT B Lærer: Karl Bjarnason Afleveringsdato:

eskattekortsanmodninger fra og med 2011

Agenda. Kort om Docpoint a/s. Passer Lasernet ind i en moderne IT-arkitektur?

FBS for praktikere Fyn. Notifikation og print skabeloner

Lineær og logistisk regression

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

PHP Quick Teknisk Ordbog

Computer Networks Specielt om Infrastrukturer og Teknologi

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

SQL Server 2008 Spatiale eksempler. Plan & Miljø, GIS

Advanced Word Template Brugermanual

Sikker kode? Gennemgang af mest almindelige hacker angreb

2. Husk at give execute-tilladelser. I Filezilla højreklikker I på den overførte file, så vælger I fileattributes og sætter kryds i execute.

IDENTIFON. Emil Hauberg, Jakob Christoffersen, Ninette Nielsen og Senia Lundberg

Transkript:

Anvendelse af Model- View koncept i SAS Stored Processer Peter Sandal Boll Chefkonsulent Professional Services, Skanderborg SAS Institute A/S

Agenda Model-View-Controller konceptet (MVC) Eksempel med put-rapport Hvordan anvendes MVC i en SAS Stored Process Eksempler (HTML, RTF) Anbefalinger og konklusioner Spørgsmål

Model-View-Controller Client Application Server Data Server request Controller Browser Model response View

Model-View-Controller SAS Stored Process Server Client SAS Stored Process Server Data Server request SAS-program Browser Macrovariable Datastep response HTMLtemplate

Eksempel: put-rapport data _null_; file _webout; txt = "Vores besked i alertboksen!!"; put '<HTML>'; put '<HEAD><TITLE>Hello World!</TITLE>'; put '<script language="javascript">'; put 'function showalert(msg) {'; put ' alert(msg)'; put '}'; put '</script>'; put '</HEAD>'; put '<BODY>'; put '<H1>Hello World!</H1>'; put '<H2>Dannet med put-rapport og javascript...</h2>'; put '<form>'; put '<input type="button" value="vis alert" onclick="showalert(''' txt +(-1) ''');">'; put '</form>'; put '</BODY>'; put '</HTML>'; run; stp\helloworld.sas http://localhost:8080/sasstoredprocess/input/sasforum0 9/HelloWorld.jsp Skriv output til browser Eksempel på SAS-variabel Statisk HTML-kode Anvendelse af SAS-variabel

Udfordringer i koden? Sammenblanding af programlogik og kode til præsentation af data Kode bliver nemt uoverskueligt F. eks. hører nogle plinger til SAS logik, andre hører til HTML 80-90% er statisk indhold Kan koden struktureres på en mere overskuelig måde? Ja, principperne fra Model-View konceptet kan anvendes! data _null_; file _webout; txt = "Vores besked i alertboksen!!"; put '<HTML>'; put '<HEAD><TITLE>Hello World!</TITLE>'; put '<script language="javascript">'; put 'function showalert(msg) {'; put ' alert(msg);'; put '}'; put '</script>'; put '</HEAD>'; put '<BODY>'; put '<H1>Hello World!</H1>'; put '<H2>Dannet med put-rapport og javascript...</h2>'; put '<form>'; put '<input type="button" value="vis alert" onclick="showalert(''' txt +(-1) ''');">'; put '</form>'; put '</BODY>'; put '</HTML>'; run;

HTML-template Viewer-del lægges i en separat fil, som kaldes af SAS - programmet Dynamiske elementer lægges i tags, som efterfølgende substitueres med værdien af konkret macrovariabel F.eks. substitueres &txt med indholdet af macrovariablen txt i SAS programmet <HTML> <HEAD><TITLE>Hello World!</TITLE> <script language="javascript"> function showalert(msg) { } alert(msg); </script> </HEAD> <BODY> <H1>Hello World!</H1> <H2>Dannet via ekstern template...</h2> <form> <input type="button" value="vis alert" onclick="showalert('&txt');"> </form> </BODY> </HTML>

SAS -program %let template=c:\sas Forum 2009\templates\HelloWorld_Template.html; * Liste af macrovariable, der skal substitueres i templaten; %let txt = Besked fra Hello World!!; %streamfile("&template",_webout, txt _srvname _srvport _metauser); Reference til template Reference til output Liste af macrovariable, der skal substitueres stp\helloworld_template.sas http://localhost:8080/sasstoredprocess/input/sasforu m09/helloworld_template.jsp

Streamfile Macro Substituerer tags i template-fil med indholdet af macrovariabel Tags er opbygget med ved hjælp af & + navn på macrovariabel *stop*-tags afbryder udskrivning midlertidigt Mulighed for at substituere *stop*-tags med output fra SAS Udskrivning i template fortsættes, når dynamisk SAS-kode er udført

Streamfile Macro %macro streamfile(inputfile,outputfile,resolvevars,mode=); %if not %symexist(linienr) %then %do; %put NOTE: Linienr defineres...; %global linienr; %end; %if %upcase(&mode) ne CONTINUE %then %let linienr=0; %put NOTE: Startlinienr: &linienr; data _null_; length taller 8; retain taller 0; infile &inputfile lrecl=32767 _infile_=inputbuf end=eof; input ; taller=taller+1; %local i; %let i=1; %do %while(%scan(&resolvevars,&i) ne ); %let mvar=%scan(&resolvevars,&i); %global &mvar; if index(inputbuf,'&'!!"&mvar") then inputbuf = tranwrd(inputbuf,'&'!!"&mvar","&&&mvar"); %let i=%eval(&i+1); %end; file &outputfile lrecl=32767; if index(inputbuf,'*stop*') and &linienr<taller then do; call symput('taller',taller); stop; end; if &linienr<=taller then put _infile_; if eof then call symput('taller',taller); run; %let linienr=%eval(&taller+1); %put NOTE: Slutlinienr: &linienr; %mend streamfile;

HTML-template med stop-tags. <form action="&_url" method="post" target="newwin"> <input type="hidden" name="_program" value="/sasforum09/class_report"> <table><tr><td>vælg køn:</td></tr> <tr><td> <select name="sex"> *stop* </select> </td></tr> Her returneres kontrollen til SAS -programmet igen <tr><td>vælg alder:</td></tr> <tr><td> <select name="age"> *stop* </select> </td></tr> <tr><td><input type="button" name="button1" Value="Dan rapport" onclick="form.submit();"></td></tr> </table> </form>

SAS -program med stop-tags %let template=c:\sas Forum 2009\templates\Class_Template.html; %streamfile("&template",_webout,_srvname _srvport _url _program _metauser); proc sql; create table sex as select distinct sex from sashelp.class; quit; data _null_; set sex; file _webout; put '<option value="' sex +(-1) '"> ' sex +(-1) '</option>'; run; Læs template indtil første *stop*-tag Udskriv distincte værdier for køn Læs template indtil næste *stop*-tag %streamfile("&template",_webout,_srvname _srvport _url _program _metauser,mode=continue);

SAS -program med stop-tags proc sql; create table age as select distinct age from sashelp.class; quit; data _null_; set age; file _webout; put '<option value="' age +(-1) '"> ' age +(-1) '</option>'; run; Udskriv distincte værdier for alder Læs resten af template %streamfile("&template",_webout,_srvname _srvport _url _program _metauser,mode=continue); stp\class_template.sas http://localhost:8080/sasstoredprocess/input/sasforum09/class_template.jsp

Eksempel med RTF-template Templaten behøver ikke være HTML, f. eks. kan RTF også benyttes RTF er et tekst-baseret format på linje med HTML, hvor vi kan substituere værdier F.eks. kan MS Word benyttes til opbygning/redigering af skabelon templates\lonaftale_skabelon_kto.rtf

Eksempel med RTF-template %let template=c:\sas Forum 2009\templates\lonaftale_skabelon_kto.rtf; * Liste af macrovariable, der skal substitueres i templaten; %let afd = Afdeling A1; %let navn = Ulla Jensen; %let stilling = Sygeplejerske; %let cpr = 123456-7890; %let tjnr = 12345; %let tj = ; %let ovk = X; %let rc = %sysfunc(stpsrv_header(content-type,application/vnd.msword)); %let rc = %sysfunc(stpsrv_header(content-disposition,"attachment;filename=report.doc")); %streamfile("&template",_webout, afd navn stilling cpr tjnr tj ovk _srvname _srvport _metauser); http://localhost:8080/sasstoredprocess/input/sasforum09/rtf_template.jsp

Anbefalinger og konklusioner Undgå så vidt muligt sammenblanding af SAS -kode og HTMLkode i put-rapporter Programlogik og præsentation kan skilles ad, med anvendelsen af templates Løs kobling af model (data) og viewer (template) gør det nemt at vise modellens data i et andet view Lettere vedligeholdelse af webgrænseflade Mere overskuelige programmer Fleksibel måde at danne flere typer output HTML, RTF

Spørgsmål?

Peter Sandal Boll Peter.Boll@sdk.sas.com