Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/cr0ph/staging.phastar.com/wp-includes/functions.php on line 6260
Phastar's 2023 SAS Art Competition Winner
Green molecular structure illustration

Season’s Greetings from Phastar’s 2023 SAS Art Competition Winner!

3 minute read

Published: December 14th, 2023

Season’s Greetings from the Phastar team!

Each year Phastar holds an internal competition among its programmers to create a work of festive art, using only their imagination and SAS software!

If you’d like to see how it all works , find the SAS code below:

data xmas;
%annomac;
length style $200;
vpos = 100;
hpos = 105;

green = ‘cx2A8307 cx3C6629 cx5B993D cx185920 cx16A629 cx388C4C cx118044 cx2E734E cx5D8C64 cx3B593F cx2E332C cx0A260E cx6EA688 cx143322 cx118044’;
orn = ‘cxFF0000 cx13478C cx3230B2 cx6130B2 cx90B0D9 cx4DBFBC cx138C89 cxCC1B2B cxE599A7 cxA030B2 cx731F65 cxAEE554 cxE5B82E cxD9892B cxDC143C cxFFF5EE cx73002E CXAF95A6’;

%system(4,4,1);

*background;
*%bar(0,0,105,100,cx1B1B26 ,0,solid); * dark blue;
%bar(0,0,105,100,cx142233 ,0,solid); *deep greenish blue;
%bar(0,15, 105,50, cxBFBFBF, 0, solid); *light gray;
%bar(0,0, 105,15, cxFFFFFF, 0, solid); *white;

*moon;
%slice(12,90,0,365,5, cxDEDDED, ps, whole);

*mountain 1;
%poly(0,50, cx373740, solid, 1); *dary grayish blue;
%polycont(30,85);
%polycont(34,84);
%polycont(40,90);
%polycont(45,85);
%polycont(55,95);
%polycont(65,80);
%polycont(69,85);
%polycont(74,79);
%polycont(77,83);
%polycont(95,60);
%polycont(95,50);

  • mountain snow;
    %poly(25,80, cxFFFFFF, solid, 1);
    %polycont(30,85);
    %polycont(34,84);
    %polycont(40,90);
    %polycont(45,85);
    %polycont(55,95);
    %polycont(65,80);
    %polycont(69,85);
    %polycont(74,79);
    %polycont(77,83);
    %polycont(75,79);
    %polycont(75,75);
    %polycont(72,78);
    %polycont(63,74);
    %polycont(57,80);
    %polycont(51,75);
    %polycont(44,74);
    %polycont(35,77);
    %polycont(30,75);

*mountain 2;
%poly(0,50,cx8C8883, solid, 1); *light brownish gray;
%polycont(0,74);
%polycont(5,70);
%polycont(15,80);
%polycont(25,69);
%polycont(30,75);
%polycont(47,50);
*snow on mountain;
%poly(0,50,cxFFFFFF, solid, 1); *light brownish gray;
%polycont(0,74);
%polycont(5,70);
%polycont(15,80);
%polycont(25,69);
%polycont(30,75);
%polycont(25,65);
%polycont(23,64);
%polycont(20,65);
%polycont(14,69);
%polycont(10,64);
%polycont(7,68);
%polycont(3,65);
%polycont(0,67);

  • Mountain 3;
    %poly(73,50,cx535359, solid, 1); *dark blueish gray;
    %polycont(100,85);
    %polycont(105,80);
    %polycont(105,50);
    *mountain snow;
    %poly(92,75,cxFFFFFF, solid, 1);
    %polycont(96,73);
    %polycont(101,76);
    %polycont(105,72);
    %polycont(105,80);
    %polycont(100,85);

*trees behind Chalet;
do i = 0 to 103 by 2;
%poly(0+i,50, Cx172118, solid,1);
%polycont(1+i,57);
%polycont(2+i,50);
end;

do i = 0 to 100 by 3;
%poly(1+i,45, Cx3B593F , solid,1);
%polycont(3+i,55);
%polycont(5+i,45);
end;

%poly(0,47, Cx264C14, solid,1);
%polycont(3,55);
%polycont(6,47);

do i = 0 to 100 by 5;
%poly(0+i,45, Cx143322 , solid,1);
%polycont(2.5+i,55);
%polycont(5+i,45);
end;

%poly(9,50, Cx264C14, solid,1);
%polycont(10,56);
%polycont(11,50);

%poly(19,47, Cx264C14, solid,1);
%polycont(21,55);
%polycont(23,47);

%poly(53,48, Cx264C14, solid,1);
%polycont(54,57);
%polycont(53,48);

%poly(65,45, Cx264C14, solid,1);
%polycont(68,54);
%polycont(71,45);

%poly(80,40, Cx172118, solid,1);
%polycont(85,60);
%polycont(90,40);

%poly(99,47, Cx264C14, solid,1);
%polycont(100,55);
%polycont(101,47);

%poly(2,49, cx2A8307, solid,1);
%polycont(10,20);
%polycont(0,20);

%poly(80,55, cx0A260E , solid,1);
%polycont(84,25);
%polycont(76,25);

%poly(101,57,cx185920, solid,1);
%polycont(105,27);
%polycont(95,27);

%poly(97,49, cx3B593F , solid,1);
%polycont(103, 15);
%polycont(92,16);

%poly(77,52,cx16A629,solid,1);
%polycont(82,17);
%polycont(72,17);

%bar(89,17, 91,22, cx593B18 , 0, solid);
%poly(90,57, cx264C14 , solid,1);
%polycont(95,49);
%polycont(85,49);
%poly(90,51, cx264C14, solid,1);
%polycont(98,40);
%polycont(82,40);
%poly(90,45, cx264C14, solid,1);
%polycont(100,30);
%polycont(80,30);
%poly(90,35, cx264C14, solid,1);
%polycont(101,21);
%polycont(79,21);

%poly(16,52, cx47592A, solid,1);
%polycont(12,43);
%polycont(16,44);
%poly(16,46, cx47592A, solid,1);
%polycont(16,40);
%polycont(12,38);
%poly(16,42, cx47592A, solid,1);
%polycont(16,32);
%polycont(10,30);
%poly(16,54, cx47592A, solid,1);
%polycont(20,43);
%polycont(16,44);
%poly(16,46, cx47592A, solid,1);
%polycont(16,40);
%polycont(20,38);
%poly(16,42, cx47592A, solid,1);
%polycont(16,32);
%polycont(22,30);

%poly(61,50, cx1F261C, solid,1);
%polycont(61, 47);
%polycont(59, 46);
%poly(61,47, cx1F261C, solid,1);
%polycont(61, 43);
%polycont(57, 42);
%poly(61,45, cx1F261C, solid,1);
%polycont(61, 36);
%polycont(56,34);
%poly(61,50, cx1F261C, solid,1);
%polycont(61, 47);
%polycont(63, 46);
%poly(61,47, cx1F261C, solid,1);
%polycont(61, 43);
%polycont(65, 42);
%poly(61,45, cx1F261C, solid,1);
%polycont(61, 36);
%polycont(67,34);

%poly(12,47, cx143322, solid,1);
%polycont(9,30);
%polycont(15,30);

%poly(3,40, cx0A260E, solid,1);
%polycont(0, 15);
%polycont(6,15);

%poly(65, 59, cx5D8C64, solid,1);
%polycont(60,20);
%polycont(70,20);

%bar(99.5,11, 100.5,20, cx593B18 , 0, solid);
%poly(100,37, cx2A8307, solid,1);
%polycont(95,14);
%polycont(105,14);

*Chalet;
*chimney;
%bar(20,30,22.5,55, cx171719, 0, solid);
roof green; %poly(7.5,15, cx185920, solid,1);green;
%polycont(27.5,57);
%polycont(30,57);
%polycont(10,15);

*face red;
%poly(10,15, cxFF0000, solid,1);
%polycont(30,57);
%polycont(50,15);
%poly(10,15, cx4C2714, n,3);
%polycont(30,57);
%polycont(50,15);

*doors and windows;
%bar(25,15,35,30,cx185920, 0, solid);
%bar(25,15,35,30,cx118044, 0, empty);
%bar(25,15,30,30,cx118044, 0, empty);

%bar(19,15, 24, 30, cxE5B82E, 0, solid);
%bar(19,15, 24, 30, cx185920, 0, empty);
%bar(19,25, 24, 30, cx185920, 0, empty);

%bar(36,15, 41, 30, cxE5B82E, 0, solid);
%bar(36,15, 41, 30, cx185920, 0, empty);
%bar(36,25, 41, 30, cx185920, 0, empty);

%bar(25,31,35,45,cxE5B82E, 0, solid);
%bar(25,31,35,45,cx185920, 0, empty);
%bar(25,31,30,45,cx185920, 0, empty);

%poly(24,31, cxE5B82E, solid,1);
%polycont(24, 40);
%polycont(19, 31);

%poly(36,31, cxE5B82E, solid,1);
%polycont(36,40);
%polycont(41, 31);

%poly(24,31, cx185920, empty, 1);
%polycont(24, 40);
%polycont(19, 31);

%poly(36,31, cx185920, empty,1);
%polycont(36,40);
%polycont(41, 31);

*door knob;
%slice(29,22.5,0,365,.7, cxFF0000, ps, whole);
%slice(31,22.5,0,365,.7, cxFF0000, ps, whole);

*roof white;
%poly(27.5,57, cxDEDDED, solid,1);
%polycont(50,57);
%polycont(72.5, 15);
%polycont(50,15);

*trees in front of chalet;
%bar(70,13,72,22, cx803009, 0, solid);
%poly(61, 19, cx0A260E, solid,1);
%polycont(70,51);
%polycont(79,19);

%bar(7,13,9,22, cx8C411C, 0, solid);
%poly(3,21, cx47592A , solid,1);
%polycont(8,60);
%polycont(13,21);

*snow;
do i=1 to 900 by 1;
%slice(rand(“uniform”,1,104), rand(“uniform”,1,99), 0,360,rand(“uniform”, .001,.5), cxFFFFFF,ps, whole);
end;

%bar(3, 3, 102, 12, CXAF95A6,0, solid);
%bar(3, 3, 102, 12, cx73002E,0, empty);
%label(52.5, 7.5, “Season’s Greetings from Phastar”, cx73002E, 0, 0, 8.3, OLDENG, +); * stuggling with the font-update length style fixed it;

run;

proc gslide annotate = xmas;
run;
quit;

Related articles

Building a Successful Clinical Development Strategy with the Right Biometrics CRO 

Building a Successful Clinical Development Strategy with the Right Biometrics CRO 

November 9th, 2026 7 minute read

Clinical development teams are often familiar with outsourcing activities such as monitoring, project management, and...

Is the FSP Model Right for Your Clinical Program? 

Is the FSP Model Right for Your Clinical Program? 

November 6th, 2026 8 minute read

Clinical development teams are under constant pressure to deliver more with fixed budgets, tight timelines, and limit...

Meet the Team: Giles Partington, Consultant Statistician 

Meet the Team: Giles Partington, Consultant Statistician 

November 5th, 2026 4 minute read

In our “Meet the Team” series, we highlight the talented individuals who drive  Phastar’s success. Each t...