SASUnit Examples  Version 1.2.1
_sasunit_reporttreehtml.sas
Go to the documentation of this file.
1 
32 /* change history
33  12.08.2008 AM national language support
34  29.12.2007 AM Texte verbessert, Teilbaum Prüflinge fertiggestellt,
35  temporäre Dateien aufgeräumt
36 */
37 
38 %MACRO _sasunit_reportTreeHTML (
39  i_repdata =
40  ,o_html =
41 );
42 
43 %LOCAL l_title;
44 %LET l_title = &g_project | SASUnit;
45 
46 %LOCAL d_tree d_tree1 d_tree2 d_la i;
47 %_sasunit_tempFilename(d_tree)
48 %_sasunit_tempFilename(d_tree1)
49 %_sasunit_tempFilename(d_tree2)
50 %_sasunit_tempFilename(d_la)
51 
52 /*-- generate tree structure 1 for test scenarios ----------------------------*/
53 DATA &d_tree1 (KEEP=label popup target lvl term lst1-lst5);
54  LENGTH label popup target $255 lvl term lst1-lst5 8;
55  RETAIN lst1-lst5 0;
56  SET &i_repdata;
57  BY scn_id cas_id tst_id;
58 
59  IF _n_=1 THEN DO;
60  label = "&g_nls_reportTree_001";
61  popup = "&g_nls_reportTree_002";
62  target = "scn_overview.html";
63  lvl = 1;
64  term = 0;
65  lst1 = 0;
66  lst2 = 0;
67  lst3 = 0;
68  lst4 = 0;
69  OUTPUT;
70  END;
71 
72  IF first.scn_id THEN DO;
73  label = scn_path;
74  popup = "&g_nls_reportTree_003 " !! put(scn_id,z3.) !! ': 
' !! scn_desc;
75  target = "cas_overview.html#scn" !! put(scn_id,z3.);
76  lvl = 2;
77  term = 0;
78  lst2 = scn_last;
79  lst3 = 0;
80  lst4 = 0;
81  OUTPUT;
82  END;
83 
84  IF first.cas_id THEN DO;
85  label = put(cas_id,z3.);
86  popup = "&g_nls_reportTree_004 " !! put (cas_id,z3.) !! ': 
' !! cas_desc;
87  target = 'cas_' !! put(scn_id,z3.) !! "_" !! put (cas_id,z3.) !! ".html";
88  lvl = 3;
89  term = 0;
90  lst3 = cas_last;
91  lst4 = 0;
92  OUTPUT;
93  END;
94 
95  label = put (tst_id, z3.) !! ' (' !! trim(tst_type) !! ')';
96  popup = "&g_nls_reportTree_005 " !! put (tst_id,z3.) !! ': 
' !! tst_desc;
97  target = 'cas_' !! put(scn_id,z3.) !! "_" !! put (cas_id,z3.) !! ".html#tst" !! put (tst_id,z3.);
98  lvl = 4;
99  term = 1;
100  lst4 = last.cas_id;
101  OUTPUT;
102 
103 RUN;
104 
105 /*-- generate tree structure 2 for units under test --------------------------*/
106 DATA &d_tree2 (KEEP=label popup target lvl term lst1-lst5);
107  LENGTH label popup target $255 lvl term lst1-lst5 8;
108  RETAIN lst1-lst5 0;
109  SET &i_repdata;
110  BY cas_auton pgm_id scn_id cas_id tst_id;
111 
112  IF _n_=1 THEN DO;
113  label = "&g_nls_reportTree_006";
114  popup = "&g_nls_reportTree_007";
115  target = "auton_overview.html";
116  lvl = 1;
117  term = 0;
118  lst1 = 1;
119  lst2 = 0;
120  lst3 = 0;
121  lst4 = 0;
122  lst5 = 0;
123  OUTPUT;
124  END;
125 
126  IF first.cas_auton THEN DO;
127  SELECT (cas_auton);
128  WHEN (0) label = tsu_sasautos;
129 %DO i=1 %TO 9;
130  WHEN (&i) label = tsu_sasautos&i;
131 %END;
132  OTHERWISE label="(&g_nls_reportTree_008)";
133  END;
134  IF cas_auton=0 THEN
135  popup = "&g_nls_reportTree_009 sasautos:" !! '
' !! label;
136  ELSE IF cas_auton>0 THEN
137  popup = "&g_nls_reportTree_009 sasautos" !! left(put(cas_auton,1.)) !! ':
' !! label;
138  ELSE
139  popup = "&g_nls_reportTree_010";
140  target = "auton_overview.html#auton";
141  IF cas_auton NE . THEN target = trim(target) !! put(cas_auton,z3.);
142  lvl = 2;
143  term = 0;
144  lst2 = auton_last;
145  lst3 = 0;
146  lst4 = 0;
147  lst5 = 0;
148  OUTPUT;
149  END;
150 
151  IF first.pgm_id THEN DO;
152  label = cas_pgm;
153  SELECT (cas_auton);
154  WHEN (0) popup = trim(tsu_sasautos) !! '/' !! cas_pgm;
155 %DO i=1 %TO 9;
156  WHEN (&i) popup = trim(tsu_sasautos&i) !! '/' !! cas_pgm;
157 %END;
158  OTHERWISE popup=cas_pgm;
159  END;
160  popup = "&g_nls_reportTree_011: " !! '
' !! popup;
161  target = "auton_overview.html#auton";
162  IF cas_auton NE . THEN target = trim(target) !! put(cas_auton,z3.);
163  target = trim(target) !! '_' !! put(pgm_id,z3.);
164  lvl = 3;
165  term = 0;
166  lst3 = pgm_last;
167  lst4 = 0;
168  lst5 = 0;
169  OUTPUT;
170  END;
171 
172  IF first.cas_id THEN DO;
173  label = put(scn_id,z3.) !! "_" !! put(cas_id,z3.);
174  popup = "&g_nls_reportTree_012 " !! put(scn_id,z3.) !! ", &g_nls_reportTree_013 " !! put (cas_id,z3.) !! ': 
' !! cas_desc;
175  target = 'cas_' !! put(scn_id,z3.) !! "_" !! put (cas_id,z3.) !! ".html";
176  lvl = 4;
177  term = 0;
178  lst4 = pcs_last;
179  lst5 = 0;
180  OUTPUT;
181  END;
182 
183  label = put (tst_id, z3.) !! ' (' !! trim(tst_type) !! ')';
184  popup = "&g_nls_reportTree_014 " !! put (tst_id,z3.) !! '
' !! tst_desc;
185  target = 'cas_' !! put(scn_id,z3.) !! "_" !! put (cas_id,z3.) !! ".html#tst" !! put (tst_id,z3.);
186  lvl = 5;
187  term = 1;
188  lst5 = last.cas_id;
189  OUTPUT;
190 
191 RUN;
192 
193 /*-- Lookahead für Level -----------------------------------------------------*/
194 DATA &d_tree &d_la(KEEP=lvl RENAME=(lvl=nextlvl));
195  SET &d_tree1 &d_tree2 END=eof;
196  OUTPUT &d_tree;
197  IF _n_>1 THEN OUTPUT &d_la;
198  IF eof THEN DO;
199  lvl=1;
200  OUTPUT &d_la;
201  END;
202 RUN;
203 
204 DATA &d_tree;
205  MERGE &d_tree &d_la;
206 RUN;
207 
208 
209 /*-- generate HTML and javascript code ---------------------------------------*/
210 DATA _null_;
211  SET &d_tree END=eof;
212  FILE "&o_html" LRECL=1024;
213 
214  IF _n_=1 THEN DO;
215  %_sasunit_reportHeaderHTML(&l_title)
216  PUT " <script type=""text/javascript"">";
217  PUT " <!-- // Hide script from old browsers";
218  PUT " ";
219  PUT " function toggleFolder(id, imageNode) ";
220  PUT " {";
221  PUT " var folder = document.getElementById(id);";
222  PUT " var l = imageNode.src.length;";
223  PUT " if (imageNode.src.substring(l-20,l)==""ftv2folderclosed.png"" || ";
224  PUT " imageNode.src.substring(l-18,l)==""ftv2folderopen.png"")";
225  PUT " {";
226  PUT " imageNode = imageNode.previousSibling;";
227  PUT " l = imageNode.src.length;";
228  PUT " }";
229  PUT " if (folder == null) ";
230  PUT " {";
231  PUT " } ";
232  PUT " else if (folder.style.display == ""block"") ";
233  PUT " {";
234  PUT " if (imageNode != null) ";
235  PUT " {";
236  PUT " imageNode.nextSibling.src = ""ftv2folderclosed.png"";";
237  PUT " if (imageNode.src.substring(l-13,l) == ""ftv2mnode.png"")";
238  PUT " {";
239  PUT " imageNode.src = ""ftv2pnode.png"";";
240  PUT " }";
241  PUT " else if (imageNode.src.substring(l-17,l) == ""ftv2mlastnode.png"")";
242  PUT " {";
243  PUT " imageNode.src = ""ftv2plastnode.png"";";
244  PUT " }";
245  PUT " }";
246  PUT " folder.style.display = ""none"";";
247  PUT " } ";
248  PUT " else ";
249  PUT " {";
250  PUT " if (imageNode != null) ";
251  PUT " {";
252  PUT " imageNode.nextSibling.src = ""ftv2folderopen.png"";";
253  PUT " if (imageNode.src.substring(l-13,l) == ""ftv2pnode.png"")";
254  PUT " {";
255  PUT " imageNode.src = ""ftv2mnode.png"";";
256  PUT " }";
257  PUT " else if (imageNode.src.substring(l-17,l) == ""ftv2plastnode.png"")";
258  PUT " {";
259  PUT " imageNode.src = ""ftv2mlastnode.png"";";
260  PUT " }";
261  PUT " }";
262  PUT " folder.style.display = ""block"";";
263  PUT " }";
264  PUT " }";
265  PUT " ";
266  PUT " // End script hiding -->";
267  PUT " </script>";
268  PUT " </head>";
269  PUT " ";
270  PUT " <body class=""ftvtree"">";
271  PUT " <div class=""directory"">";
272  PUT ' <h3><a class="el" href="overview.html" title="' "&g_nls_reportTree_015 &g_project" '" target="basefrm">' "&g_project" '</a></h3>';
273  PUT " <div style=""display: block;"">";
274  END;
275 
276  ARRAY lst{5} lst1-lst5;
277  RETAIN folder 0;
278  PUT "<p>" @;
279  DO i=1 TO lvl-1;
280  IF lst{i} THEN PUT '<img src="ftv2blank.png" width=16 height=22 />' @;
281  ELSE PUT '<img src="ftv2vertline.png" width=16 height=22 />' @;
282  END;
283  IF term THEN DO;
284  IF lst{i} THEN PUT '<img src="ftv2lastnode.png" width=16 height=22 />' @;
285  ELSE PUT '<img src="ftv2node.png" width=16 height=22 />' @;
286  PUT '<img src="ftv2doc.png" width=24 height=22 />' @;
287  END;
288  ELSE DO;
289  folder+1;
290  IF lst{i} THEN PUT '<img src="ftv2plastnode.png" width=16 height=22 '
291  'onclick="toggleFolder(''folder' folder +(-1) ''', this)"/>' @;
292  ELSE PUT '<img src="ftv2pnode.png" width=16 height=22 '
293  'onclick="toggleFolder(''folder' folder +(-1) ''', this)"/>' @;
294  PUT '<img src="ftv2folderclosed.png" width=24 height=22 '
295  'onclick="toggleFolder(''folder' folder +(-1) ''', this)"/>' @;
296  END;
297  PUT '<a class="el" href="' target +(-1) '" title="' popup +(-1) '" target="basefrm">' label +(-1) '</a></p>';
298  IF NOT term AND lvl<nextlvl THEN PUT '<div id="folder' folder +(-1) '">';
299  DO i=nextlvl+1 TO lvl;
300  PUT "</DIV>";
301  END;
302 
303  IF eof THEN DO;
304  PUT '</div></div></body></html>';
305  END;
306 
307 RUN;
308 
309 PROC DATASETS NOLIST NOWARN LIB=work;
310  DELETE %scan(&d_tree,1,.) %scan(&d_tree1,1,.) %scan(&d_tree2,1,.) %scan(&d_la,1,.);
311 QUIT;
312 
313 %MEND _sasunit_reportTreeHTML;