Giter Site home page Giter Site logo

sas_makroer's Introduction

Status

SAS-makroer utviklet og brukt ved SKDE

Bruke makroene

Makroene ligger her:

\\tos-sas-skde-01\SKDE_SAS\Makroer\master

For å bruke de i din egen SAS-kode, legges følgende inn i koden:

%let filbane=\\tos-sas-skde-01\SKDE_SAS\;
options sasautos=("&filbane.Makroer\master" SASAUTOS);

Dokumentasjon om de ulike makroene finnes her

Lage en ny makro

I korte trekk gjør man følgende

  1. Kopier mappen \\tos-sas-skde-01\SKDE_SAS\Makroer\master og jobb i den kopierte mappen.
  2. Lag en sas-fil som heter det samme som makroen man vil lage.
  3. Lag makroen, og dokumenter den.
  4. Lag en test
  5. Dytt opp til egen branchgithub og lag en pull request (ev. be Arnfinn gjøre det).
  6. Oppdater \\tos-sas-skde-01\SKDE_SAS\Makroer\master (git pull --rebase, ev. be Arnfinn gjøre det)

Eksempel på makro

Eksempel på makro, som legges i en fil som heter minNyeMakro.sas:

%macro minNyeMakro(datasett =, variabel1 = );

/*!
Min dokumentasjon av makroen minNyeMakro

Makroene dokumenteres direkte i koden.
*/

sas-kode...

%mend;

Dokumentering av makroen

Legg inn en forklaring om hva makroen gjør rett under %macro minNyeMakro;. Start kommentaren med /*! (legg merke til ! etter /*). Alt som ligger mellom /*! og */ vil legges på nett (her) etter at man har dyttet alt opp til github.

Lage en test til makroen

Når man lager en makro burde man også lage en test. Denne kan så kjøres senere for å sjekke at makroen ikke er blitt ødelagt. en enkel test kan se slik ut:

%macro minNyeMakro_test(branch = master, debug = 0, lagNyRef = 0, lagNyStart = 0);

%include "\\tos-sas-skde-01\SKDE_SAS\makroer\&branch.\minNyeMakro.sas";

data test;
set skde_tst.minNyeMakro_start;
run;

%minNyeMakro(variabel1 = test);

proc compare base=skde_tst.ref_minNyeMakro compare=test BRIEF WARNING LISTVAR;

%mend;

Her kjører man makroen på en kopi av datasettet skde_tst.minNyeMakro_start og tester at det er likt datasettet skde_tst.ref_minNyeMakro. Disse to datasettene er lagret på server på forhånd. Se i mappen tests\ for eksempler på bruk av argumentene branch, debug, lagNyRef og lagNyStart.

Legg denne testen i mappen tests i filen minNyeMakro_test.sas. Legg så inn følgende kode i filen test_makroer.sas:

%include "&filbane.makroer\&branch.\tests\minNyeMakro_test.sas";
%minNyeMakro_test(branch = &branch, lagNyRef = &lagNyRef, lagNyStart = &lagNyStart);

Dytte makroen opp til github

Man gjør følgende i mappen \\tos-sas-skde-01\SKDE_SAS\Makroer\<min_mappe> med git-bash etter at man har lagd en makro og dokumentert den (eventuelt endret dokumentasjonen i en makro):

git status # for å sjekke at alt er som det skal
git diff # for å sjekke litt ekstra nøye
git checkout -b <branchname> # endre branch (bytt ut `<branchname>` med ønsket navn på branch).
git add <filnavn.sas> # Legg inn filene som skal dyttes opp (her legger vi til filen `filnavn.sas`)
git commit -m 'My new fancy macro, with doc and test' # Skriv en pen commit-beskjed
git push -u origin branchname # Dytt opp til github

Gå så inn på github/branches og trykk på New pull request ved siden av din nye branch. Fyll ut og be en kollega se på hva du har gjort (legg inn en Reviewer).

sas_makroer's People

Contributors

arnfinn avatar knarfneslo avatar hannesigrun avatar pot001 avatar

Watchers

 avatar James Cloos avatar  avatar

Forkers

arnfinn

sas_makroer's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.