0% found this document useful (0 votes)
9 views91 pages

Sas Graphics For Java Examples Using Sas Appdev Studio and The Output Delivery System Wendy Bohnenkamp Instant Download

The document is a guide titled 'SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System' by Wendy Bohnenkamp and Jackie Iverson, published in 2007. It provides examples and instructions for using SAS AppDev Studio to create various types of graphs and visualizations in Java applications. The book serves as a reference for programmers of all experience levels, focusing on the graph objects in SAS AppDev Studio and the Output Delivery System.

Uploaded by

jeknicrozh38
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views91 pages

Sas Graphics For Java Examples Using Sas Appdev Studio and The Output Delivery System Wendy Bohnenkamp Instant Download

The document is a guide titled 'SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System' by Wendy Bohnenkamp and Jackie Iverson, published in 2007. It provides examples and instructions for using SAS AppDev Studio to create various types of graphs and visualizations in Java applications. The book serves as a reference for programmers of all experience levels, focusing on the graph objects in SAS AppDev Studio and the Output Delivery System.

Uploaded by

jeknicrozh38
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 91

Sas Graphics For Java Examples Using Sas Appdev

Studio And The Output Delivery System Wendy


Bohnenkamp download

https://ebookbell.com/product/sas-graphics-for-java-examples-
using-sas-appdev-studio-and-the-output-delivery-system-wendy-
bohnenkamp-973520

Explore and download more ebooks at ebookbell.com


Here are some recommended products that we believe you will be
interested in. You can click the link to download.

Using Sas For Data Management Statistical Analysis And Graphics 1st
Edition Ken Kleinman

https://ebookbell.com/product/using-sas-for-data-management-
statistical-analysis-and-graphics-1st-edition-ken-kleinman-2270880

Sas Ods Graphics Designer By Example A Visual Guide To Creating Graphs


Interactively Sanjay Matange

https://ebookbell.com/product/sas-ods-graphics-designer-by-example-a-
visual-guide-to-creating-graphs-interactively-sanjay-matange-5851396

Visual Data Insights Using Sas Ods Graphics A Guide To


Communicationeffective Data Visualization 1st Edition Leroy Bessler

https://ebookbell.com/product/visual-data-insights-using-sas-ods-
graphics-a-guide-to-communicationeffective-data-visualization-1st-
edition-leroy-bessler-47552196

A Handbook Of Statistical Graphics Using Sas Ods Geoff Der Brian


Everitt

https://ebookbell.com/product/a-handbook-of-statistical-graphics-
using-sas-ods-geoff-der-brian-everitt-5058932
Statistical Graphics Procedures By Example Effective Graphs Using Sas
Sanjay Matange

https://ebookbell.com/product/statistical-graphics-procedures-by-
example-effective-graphs-using-sas-sanjay-matange-4936922

Jmp 8 Statistics And Graphics Guide 2nd Edition Sas Publishing

https://ebookbell.com/product/jmp-8-statistics-and-graphics-guide-2nd-
edition-sas-publishing-2362756

Sasstat 92 Users Guide Statistical Graphics Using Ods Sas Publishing

https://ebookbell.com/product/sasstat-92-users-guide-statistical-
graphics-using-ods-sas-publishing-1644762

Sas And R Data Management Statistical Analysis And Graphics Second


Edition 2nd Edition Ken Kleinman

https://ebookbell.com/product/sas-and-r-data-management-statistical-
analysis-and-graphics-second-edition-2nd-edition-ken-kleinman-4739676

Sas And R Data Management Statistical Analysis And Graphics 1st


Edition Ken Kleinman

https://ebookbell.com/product/sas-and-r-data-management-statistical-
analysis-and-graphics-1st-edition-ken-kleinman-1378068
SAS Graphics
®

for Java
Examples Using SAS AppDev Studio
® ™

and the Output Delivery System

Wendy Bohnenkamp
Jackie Iverson
The correct bibliographic citation for this manual is as follows: Bohnenkamp, Wendy, and Jackie Iverson.
2007. SAS® Graphics for Java: Examples Using SAS® AppDev Studio™ and the Output Delivery System. Cary,
NC: SAS Institute Inc.

SAS® Graphics for Java: Examples Using SAS® AppDev Studio™ and the Output Delivery System

Copyright © 2007, SAS Institute Inc., Cary, NC, USA

ISBN 978-1-59047-693-2

All rights reserved. Produced in the United States of America.

For a hard-copy book: No part of this publication may be reproduced, stored in a retrieval system, or
transmitted, in any form or by any means, electronic, mechanical, photocopying, or otherwise, without the
prior written permission of the publisher, SAS Institute Inc.

For a Web download or e-book: Your use of this publication shall be governed by the terms established by
the vendor at the time you acquire this publication.

U.S. Government Restricted Rights Notice: Use, duplication, or disclosure of this software and related
documentation by the U.S. government is subject to the Agreement with SAS Institute and the restrictions set
forth in FAR 52.227-19, Commercial Computer Software-Restricted Rights (June 1987).
SAS Institute Inc., SAS Campus Drive, Cary, North Carolina 27513.

1st printing, May 2007

SAS® Publishing provides a complete selection of books and electronic products to help customers use SAS
software to its fullest potential. For more information about our e-books, e-learning products, CDs, and hard-
copy books, visit the SAS Publishing Web site at support.sas.com/pubs or call 1-800-727-3228.
®
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS
Institute Inc. in the USA and other countries. ® indicates USA registration.

Other brand and product names are registered trademarks or trademarks of their respective companies.
Contents

Acknowledgments ix
Introduction xi
Part 1 SAS AppDevStudio 1
Chapter 1 Getting Started with SAS AppDev Studio 3
1.1 Tag Libraries for SAS AppDev Studio 3
1.2 Getting Ready to Add Graphs to Your SAS AppDev Studio
Project 8
1.3 Your Data 10
1.3.1 Tips and Information 11

Chapter 2 SAS AppDev Studio Custom Tags and Attributes for


Basic Graphs 13
2.1 SAS AppDev Studio 2 Tags 15
2.1.1 sasads:Bar 15
2.1.2 sasads:Combination 16
2.1.3 sasads:Pie 16
2.1.4 sasads:Scatter 17
2.1.5 sasads:SegmentedBar 17
2.2 SAS AppDev Studio 3 Tags 18
2.2.1 sas:BarChart 18
2.2.2 sas:BarLineChart 19
2.2.3 sas:LineChart 20
2.2.4 sas:LinePlot 21
2.2.5 sas:PieChart 22
2.2.6 sas:RadarChart 23
2.2.7 sas:ScatterPlot 24
2.3 Common Attributes 25
iv Contents

Chapter 3 SAS AppDev Studio 3 Graph Model Tags 39


3.1 BarChartModel 40
3.2 BarLineChartModel 50
3.3 LineChartModel 64
3.4 LinePlotModel 67
3.5 PieChartModel 74
3.6 RadarChartModel 87
3.7 ScatterPlotModel 92
3.7.1 Baselines 97

Chapter 4 Nested Tags for Graph Models 99


4.1 Axis Models 100
4.1.1 Response Axis Baseline Models 107
4.1.2 Corresponding Graph Models 108
4.1.3 Column and Row Axis Models 110
4.2 Legends 111
4.2.1 Corresponding Graph Models 113
4.3 Line Style Tags 113
4.3.1 Corresponding Graph Models 116
4.4 Text Style Tags 116
4.4.1 Corresponding Graph Models 117
4.5 AxisWallModel 118
4.6 BackgroundFillStyle 119
4.6.1 Corresponding Graph Models 122
4.7 DataElementStyle 123
4.8 DataTipModel 123
4.9 SubgroupLabelModel 124

Chapter 5 Supporting Tags 125


5.1 Fill Tags 126
5.2 Line Tags 130
5.2.1 AxisLineStyle, GridLineStyle, StrokeLineStyle,
FrameLineStyle, and OutlineLineStyle
5.2.2 BasicStroke 133
Contents v

5.3 Text Tags 133


5.3.1 Font 133
5.3.2 LabelTextStyle and ValueTextStyle 134
5.3.3 TextStyle 136
5.3.4 ShadowStyle 136
5.4 Tick Mark Tags 136
5.5 Miscellaneous Tags 137
5.5.1 DiscreteFillColor 137
5.5.2 MarkerStyle 137
5.5.3 ReferenceLineModel 140

Part 2 Output Delivery System 143


Chapter 6 Important Concepts for Getting Started with ODS
and Java 145
6.1 Java Scriptlet Code 146
6.2 General JSP Structure 146
6.3 General JSP Requirements 148
6.4 Connecting and Data Extraction 148
6.5 A Few Last Notes about Data 151

Chapter 7 Creating Graphs 153


7.1 Types of Bar Charts 154
7.1.1 Horizontal Bar Charts 154
7.1.2 Vertical Bar Charts 155
7.2 Types of Pie Charts 156
7.2.1 Pie Charts 157
7.2.2 Donut Charts 158
7.2.3 Star Charts 159
7.3 Contour Plots 159
7.4 Types of Maps 160
7.4.1 Block Maps 160
7.4.2 Choropleth Maps 161
7.4.3 Prism Maps 162
7.4.4 Surface Maps 163
7.5 Types of Plots 163
7.5.1 Bubble Plots 164
7.5.2 Plots 165
vi Contents

7.6 Three-Dimensional Graphs 166


7.6.1 Scatter Plots 166
7.6.2 Surface Plots 167

Chapter 8 Parameters for Colors 169


8.1 ODS Parameters 170
8.1.1 Non-supported parameters 181
8.2 GOPTIONS 182
8.2.1 Non-supported options 186
8.3 PROC GCHART 186
8.3.1 Summary 192
8.3.2 Non-supported parameters 193
8.4 PROC GCONTOUR 193
8.4.1 Summary 197
8.5 PROC GMAP 197
8.5.1 Summary 199
8.6 PROC GPLOT 199
8.6.1 Summary 204
8.7 PROC G3D 204
8.7.1 Summary 205
8.7.2 Non-supported parameters 205

Chapter 9 Parameters for Text 207


9.1 ODS Parameters 208
9.1.1 Non-supported parameters 213
9.2 GOPTIONS 214
9.2.1 Non-supported parameters 217
9.3 PROC GCHART 217
9.3.1 Summary 225
9.3.2 Non-supported parameters 226
9.4 PROC GCONTOUR 227
9.4.1 Summary 231
9.5 PROC GMAP 232
9.5.1 Summary 234
9.6 PROC GPLOT 234
9.6.1 Summary 238
Contents vii

9.7 PROC G3D 239


9.7.1 Summary 240

Chapter 10 Other Parameters 241


10.1 PROC GCHART 242
10.1.1 Summary 264
10.1.2 Non-supported parameters 267
10.2 PROC GCONTOUR 268
10.2.1 Non-supported parameters 272
10.3 PROC GMAP 273
10.3.1 Summary 277
10.3.2 Non-supported parameters 278
10.4 PROC GPLOT 278
10.4.1 Summary 289
10.4.2 Non-supported parameters 289
10.5 PROC G3D 290
10.5.1 Summary 298
10.5.2 Non-supported parameters 298

Part 3 Putting It Together 299


Chapter 11 Final Reports 301
11.1 Report 1: Using SAS AppDev Studio 3 Tags 301
11.2 Report 2: Using ODS 307
11.3 Conclusions 310

Appendix A SAS/GRAPH Samples and WORK Data Sets 313


References 315
Index 317
viii
Acknowledgments

Thanks to Aimee for inspiration, Andrew for support, Jackie for courage, Mom for
believing, and the readers for their interest.

Wendy Bohnenkamp

Until I started this, I never knew just how much time and effort go into writing a book.
This is hard work, and I first have to say thank you to Wendy for putting up with me as a
writing partner. Without her knowledge, skill, and drive, this book would never have
been finished. Next, I need to thank my family for their encouragement and support. And
finally, I have to say thanks to the people who buy this book. If the examples in this book
make their job easier, then it will have been worth the effort.

Jackie Iverson
x
Introduction

The idea for this book started glimmering every time we would lament to each other
about the lack of good examples. The conversation always ended with “someone should
write a book.”

This book is intended to be that source for examples. We walk you though the basics and
®
help to get you familiar with things that may be new to you or new to SAS 9. The book
can be used by programmers at all experience levels.

This book covers only the graph objects in SAS AppDev Studio, and it is assumed that
you already know how to use SAS AppDev Studio to create and deploy a JavaServer
Page (JSP) or servlet application. A basic level of SAS ODS programming knowledge is
also needed to understand the example code in Part 2.
®
SAS 9 and SAS AppDev Studio 3 were released while we were writing this book. All
®
examples have been tested on SAS 9. SAS AppDev Studio contains both the older
version of graph custom tags as well as the new versions. Therefore we briefly cover
version 2 tags, but concentrate more on the version 3 tags.

There are many parameters and attributes to cover, so the intent is to provide a reference
tool to help you build your own graphs. We’ve focused on what we feel are the two main
®
ways programmers are using SAS 9 to create graphs using Java.
There are four main sections to this book. The first is what you are reading now. Just a
“Hi how are you?” and a “Here’s the intent of this book.” The second section covers
webAF and SAS AppDev Studio. It includes a brief how-to section on using webAF as
an Interactive Development Environment (IDE) and briefly discusses SAS AppDev
Studio 2 tags and their options. Then it covers the tags and the nesting properties of SAS
AppDev Studio 3 tags. The third section is intended for SAS programmers who want to
do some reporting but who are not that familiar with custom tags. This section covers
using Output Delivery System (ODS) statements and the Java Device Driver to create
graphs. Then we wrap everything up in the fourth section to include reference and
appendix materials.

This book is not intended to give you all the answers to all the questions about SAS
graphs. It is also not a “best practice” type of cookbook. We are merely trying to put
together a reference volume that enables you to see what you can and cannot do to make
your graphs more visually appealing. For instance, when you are combining ODS and
JSP files, you get a very diverse environment. We have decided to simplify our examples
by putting everything in a single JSP instead of using servlets, macros, stored processes,
etc. We wanted to focus on the attributes, parameters, and options that make graphs
convey what you really want them to convey.
xii Introduction

Because we are focusing on the look of the graph, we chose data that helped to illustrate
the specific graph attribute. This produced graphs that may not represent a real world
situation. So don’t get hung up on trying to analyze the graph; just look at what it is
trying to show. Appendix A contains data layouts of the SAS samples and WORK data
sets that were used to produce the graphs. Most of the time we used data sets from the
SAS/GRAPH samples library to make it easy for you to reproduce the graph. Part 3,
“Putting It Together,” explains where to find the sample data sets. If we had to create or
modify the data to get a particular attribute to show more clearly, we included the SAS
code in Appendix A.

Each sample that produces output has been tested in our local development environment.
We have tried to provide you with information on what works and what may not. We
included things that did not work for us, because in your environment or in future updates
they could. If you see an option or parameter that you like, give it a try. SAS offers many
opportunities for creativity. We hope to give you a jump start on the path to great graphs.

Ready to tackle those SAS graphs?


P a r t 1
SAS AppDev Studio

Chapter 1 Getting Started with SAS AppDev Studio 3

Chapter 2 SAS AppDev Studio Custom Tags and Attributes for Basic
Graphics 13

Chapter 3 SAS AppDev Studio 3 Graph Model Tags 39

Chapter 4 Nested Tags for Graph Models 99

Chapter 5 Supporting Tags 125


2 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
C h a p t e r 1
Getting Started with SAS AppDev Studio

1.1 Tag Libraries for SAS AppDev Studio 3


1.2 Getting Ready to Add Graphs to Your SAS AppDev Studio Project 8
1.3 Your Data 10
1.3.1 Tips and Information 11

1.1 Tag Libraries for SAS AppDev Studio


In this section we are going to look at creating graphs in a JavaServer Page (JSP) using
the SAS Custom Tag Library. This tag library comes with the SAS AppDev Studio
product, which includes webAF as the development environment tool. You can use
webAF or another Java Interactive Development Environment (IDE), such as Eclipse, to
utilize the tag libraries and API components that come with SAS AppDev Studio.
4 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

SAS AppDev Studio 2.x and SAS AppDev Studio 3 use separate tag libraries. SAS
AppDev Studio 3 introduced some major enhancements to the graphics components.
We’ll look at the most commonly used graphs in each version.

The easiest way to add graphs to your JSP or servlet project in SAS AppDev Studio is to
use the Component Palette. The graph components are on the Graphics tab. You can
change the palette by clicking the down arrow on the toolbar title bar.

We will be working with graphs on the SAS JSP/Servlet (Version 3) and SAS
JSP/Servlet (Version 2) palettes.

The version 2 tag library is part of SAS AppDev Studio 3. When you create a new SAS
AppDev Studio 3 project, you can choose to include the version 2 tag library so that these
tags are available in the component palette.

When you upgrade an existing webAF 2 project to use webAF 3 components, your old
SAS AppDev Studio 2 tags (which have a sasads prefix) will still be in your project and
will not be automatically updated to SAS AppDev Studio 3 tags (with a sas prefix). In
other words, if you have a sasads:Bar chart in your project, it will not automatically be
converted to a sas:BarChart if you move to webAF 3.

Here is an overview and comparison of the graphs available in both versions. Remember
that sasads tags are from SAS AppDev Studio 2, whereas sas tags are from the more
recent SAS AppDev Studio 3.

sasads:Bar sas:BarChart
Chapter 1: Getting Started with SAS AppDev Studio 5

Here is a direct comparison of the default bar charts. Notice that the default for
sasads:Bar is a three-dimensional chart, whereas the sas:BarChart is two-dimensional.
Both have several options that can enhance the appearance.

The sasads:SegmentedBar tag really does not have


sasads:SegmentedBar an equivalent in SAS AppDev Studio 3. However,
you can mimic this graph by using the various
model attributes with the sas:BarChart tag.

The sasads:Combination tag can be used in several


sasads:Combination different ways to perform similarly to a
sas:BarLineChart, sas:LineChart, or
sas:ScatterChart tag.

This sas:BarLineChart tag has no direct partner in


sas:BarLineChart SAS AppDev Studio 2 tags.
6 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

In SAS AppDev Studio 3, line charts can


sas:LineChart be created using the sas:LineChart tag. In
SAS AppDev Studio 2, you might
consider using the sasads:Combination
tag.

sasads:Pie sas:PieChart

As with the bar charts, sasads:Pie defaults to a three-dimensional chart, and sas:PieChart
is two-dimensional. Both charts have loads of options to create a number of different
looks. Additionally, the sas:PieChart tag can create a donut and subgroup data into
concentric rings.
Chapter 1: Getting Started with SAS AppDev Studio 7

sasads:Scatter sas:ScatterPlot

SAS AppDev Studio 2 includes the sasads:Scatter tag. The equivalent tag in SAS
AppDev Studio 3 is sas:ScatterPlot.

The sas:LinePlot tag could be compared


sas:LinePlot to the previously shown SAS AppDev
Studio 2 sasads:Combination tag.
8 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

The sas:RadarChart tag is a brand-new


sas:RadarChart graph type for SAS AppDev Studio 3.

1.2 Getting Ready to Add Graphs to Your


SAS AppDev Studio Project
There are a couple of things you need to consider before you can add graphs to your
project. One is how to connect to the data. In your development environment, everything
is local and easy to get to, but in normal production environments that usually isn’t the
case. You need to plan your strategy for accessing your SAS server. Is security an issue?
How many people will be accessing this application? How many people at the same time
might need to grab the same data? All these questions should be discussed with both the
Web server and SAS server administrators. These administrative roles may be filled by
the same person or by people from different groups. Either way, you must plan and
coordinate with them. There are so many variables and combinations of system setup that
we can’t cover all of them in this book.

For this book, we’ve taken a simple approach and used a basic Java Database
Connectivity (JDBC) connection for SAS AppDev Studio 3 tags and SAS/CONNECT for
all others. If you need something more elaborate for your environment, review the SAS
documentation for SAS Integration Technologies. This resource will help you make
decisions on setting up security, pooling, connection types, etc.

Now that you have the connection, the next step is to create data models. Data models
allow you to shape the data for graphing. For instance, you might need to sort the data
alphabetically or by increasing values. Data models can also specify the columns, subset
the data, and perform other functions.
Chapter 1: Getting Started with SAS AppDev Studio 9

In SAS AppDev Studio 2, one common method is to use a sasads:DataSet tag. This
allows us to use the connection, specify the data, and shape it. Here’s an example:
<sasads:DataSet connection="bbuConnection" dataSet="samples.grains"
id="dsBar" scope="session" displayedColumns="country amount" />

In this example, we use the bbuConnection object to connect to our SAS server. Then the
dataSet attribute is used to define the data set we want to use. Here we are using the
Grains data set from the Samples library. Then, to help shape the data, we use the
displayedColumns attribute. This allows us to specify only the columns we will be
needing for the graph.

When using the SAS AppDev Studio 3 tags, we need to use different types of models.
These may seem more complicated than simply using the sasads:DataSet tag, but they are
more flexible. For sas:BarChart you use a
com.sas.graphics.components.barchart.BarChartTableDataModel. Here’s an example:

<jsp:useBean id="barChartTableDataModel1" scope="session"


class="com.sas.graphics.components.barchart.BarChartTableDataModel">
<jsp:setProperty name="barChartTableDataModel1" property="model"
value="<%=jdbcTableModelAdaptor%>" />
</jsp:useBean>

<%
barChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
barChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>

This snippet of code shows the configuration of a data model. It references a


JDBCTableModelAdapter and sets properties for the data model, such as the category
and response variables to use. See Chapter 11, “Final Reports,” for a complete example
with SAS AppDev Studio 3 tags.
10 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

1.3 Your Data


When you are using SAS data sets in SAS graphs, there are specific terms used to
describe the types of variables. For instance, you may think in terms of an X axis and Y
axis. However, because we are looking at statistical or computed variable data, most of
the time each variable has a role. On the X axis you may actually be charting data by a
category variable. Below are some terms that may help you along the way.

Category variable
A variable that determines the number and arrangement of bars, slices, lines, etc.

Response variable
The variable you are trying to understand, explain, or model.

Midpoint
The value associated with a bar on a bar or block chart or the slice on a pie chart.
This is the category variable.

Chart variable
The data column to be charted. This variable can be character or numeric.

Chart statistic
Most commonly, the sum of a numeric variable or the frequency (count) of a
character variable. Other common statistics are percentages and means. The
statistics available vary by type of graph.

Midpoint axis
The axis that shows the categories of data.

Response axis
The axis that shows the range of values for the chart statistic.

Contiguous variables
Variables that contain a range of numeric values that are represented on the
chart. For example, dollars or quantities are contiguous variables.
Chapter 1: Getting Started with SAS AppDev Studio 11

Discrete variables
Variables that contain a finite number of specific values that are represented on
the chart. For example, years, geographical areas, and company divisions are
discrete variables.

X
Used in plots (vertical) to identify the variable on the horizontal axis.

Y
Used in plots (vertical) to identify the variable on the vertical axis.

Z
Used in plots (vertical) to identify the depth variable.

For more information on terminology and graphing basics, see the SAS OnlineDoc
documentation.

1.3.1 Tips and Information


Here are a few tips on how to organize your data for maximum performance.

ƒ Usually, you should presummarize large data sets to improve performance.


ƒ If you have a large number of different categories, you might want to subset or
group the data to control the number of bars or pie slices shown in the chart.
Depending on the size of your chart, it is easy to get so many bars that you
cannot read the labels.
ƒ When there are too many values to represent in a pie chart, the smaller values are
automatically grouped into one slice labeled “Other.” By creating your own
“Other” grouping, you can prevent a smaller, but important, category from being
hidden.
ƒ When you are accessing SAS data, the system often puts a lock on the data set
you are using. For this reason, be sure to close all connection to the data once
you are done. Or consider making your connection read-only and investigate
how to set up workspace pooling or connection sharing techniques.

In short, the saying “Garbage in, garbage out” is so true. You need to be careful of how
your data is constructed and formatted before you base critical decisions on your output.
12 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System
C h a p t e r 2
SAS AppDev Studio Custom Tags and
Attributes for Basic Graphs

2.1 SAS AppDev Studio 2 Tags 15


2.1.1 sasads:Bar 15
2.1.2 sasads:Combination 16
2.1.3 sasads:Pie 16
2.1.4 sasads:Scatter 17
2.1.5 sasads:SegmentedBar 17
2.2 SAS AppDev Studio 3 Tags 18
2.2.1 sas:BarChart 18
2.2.2 sas:BarLineChart 19
2.2.3 sas:LineChart 20
2.2.4 sas:LinePlot 21
2.2.5 sas:PieChart 22
2.2.6 sas:RadarChart 23
2.2.7 sas:ScatterPlot 24
2.3 Common Attributes 25
14 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

SAS AppDev Studio gives the user a number of graphing custom tags to use with JSP
pages. The tags available in SAS AppDev Studio 2 have been updated in SAS AppDev
Studio 3. Although SAS AppDev Studio 2 tags are easier to use because they are not
nested, they are limited in what they can and cannot display. You might be tempted at
first to run with the SAS AppDev Studio 2 tags, but once you get the hang of SAS
AppDev Studio 3 tags, we think you’ll jump right in with both feet.

In general, the standard convention for SAS AppDev Studio 3 tags looks like this:
<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"
scope="session" >
</sas:BarChart>

However, if there are no nested tags, you could use the following convention. The
difference is that the tag is closed using a single backslash at the end of the invocation of
the tag.
<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"
scope="session" />

Be very careful not to use both conventions at the same time. If you accidently use /> and
then have nested tags, the compiler won’t recognize the nested tags as being part of that
tag group.

If you need to nest tags, use the following convention and insert the nested tags where
shown.
<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"
scope="session" >
<nestedTag - enter any valid nested tags here>
</nestedTag>
</sas:BarChart>

Each graph tag has three required attributes. The id attribute gives the object a name.
Each object in your scope must have a unique identifier or name. The model attribute
specifies the data model. The scope attribute defines the limit of the object’s availability,
such as session, request, page, or application.
<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"
scope="session" >
</sas:BarChart>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 15

2.1 SAS AppDev Studio 2 Tags


The following graph examples illustrate the basics of the different graphing custom tags
available from SAS AppDev Studio 2. These older tags are still available with SAS
AppDev Studio 3. However, as stated before, you might want to convert to the newer
SAS AppDev Studio 3 tags. The main difference in syntax between the two is the prefix
used for the tags. The prefix “sasads:” denotes AppDev Studio 2 tags, whereas “sas:”
denotes SAS AppDev Studio 3 tags.

2.1.1 sasads:Bar

To create a bar chart using the SAS


AppDev Studio 2 tags, use the
sasads:Bar tag.

<sasads:Bar id="bbuBar" model="dsBar" scope="session" />


16 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

2.1.2 sasads:Combination

A combination of a bar and line chart


can be created using the
sasads:Combination tag. Because
combination charts handle many
different variables, the tag requires a
few more attributes by default to
produce a readable graph. These
attributes are categoryVariableName,
responseVariableName, and
subGroupVariableName.

<sasads:Combination id="bbuCombination" model="dsBar" scope="session"


categoryVariableName="year" responseVariableName="amount"
subGroupVariableName="country" />

2.1.3 sasads:Pie

The sasads:Pie tag creates a pie chart.

<sasads:Pie id="bbuPie" model="dsBar" scope="session" />


Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 17

2.1.4 sasads:Scatter

You can create a scatter chart using


the sasads:Scatter tag.

<sasads:Scatter id="bbuScatter" model="dsBar" scope="session" />

2.1.5 sasads:SegmentedBar

You can create a stacked bar chart


using the sasads:SegmentedBar tag.
As with the combination chart, there
are more variables to define with a
segmented bar chart. The attributes
used to define these variables are
categoryVariableName,
responseVariableName, and
subGroupVariableName.

<sasads:SegmentedBar id="bbuSegmentedBar" model="dsBar"


scope="session"
categoryVariableName="year" responseVariableName="amount"
subGroupVariableName="country" />
18 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

2.2 SAS AppDev Studio 3 Tags

In SAS AppDev Studio 2, you only need a DataSetInterface or sasads:DataSet tag to


define your data. However, with SAS AppDev Studio 3, each chart type can be built
using its own data model. Therefore, in each example of a basic graph we have included
the code that builds the table data model for each graph type. For instance, with the
sas:BarChart tag the corresponding table data model is the
com.sas.graphics.components.barchart.BarChartTableDataModel class. Using this code
allows you to customize your data more than you can by using the sasads:DataSet tag.

2.2.1 sas:BarChart

The sas:BarChart tag creates a basic


bar chart. By customizing the table
data model, you can also transform the
basic bar chart into a stacked bar chart
to represent different subgroups of
data.

<jsp:useBean id="barChartTableDataModel1" scope="session"


class="com.sas.graphics.components.barchart.BarChartTableDataModel">
<jsp:setProperty name="barChartTableDataModel1" property="model"
value="<%=jdbcTableModelAdaptor%>" />
</jsp:useBean>

<%
barChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
barChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>

<sas:BarChart id="bbuSASBarChart" model="barChartTableDataModel1"


scope="session" >
</sas:BarChart>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 19

2.2.2 sas:BarLineChart

The sas:BarLineChart tag can create


bar charts that have a corresponding
line chart attached. This enables you
to see two different types of data per
category.

<jsp:useBean id="barLineChartTableDataModel1" scope="session"


class="com.sas.graphics.components.barlinechart.
BarLineChartTableDataModel">
<jsp:setProperty name="barLineChartTableDataModel1"
property="model" value="<%=jdbcTableModelAdaptor%>" />
</jsp:useBean>

<%
barLineChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("TEACHER"));
barLineChartTableDataModel1.setLineResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AGE",
com.sas.graphics.components.GraphConstants.STATISTIC_MEAN));
barLineChartTableDataModel1.setBarResponseVariable(
new com.sas.graphics.components.AnalysisVariable("HEART",
com.sas.graphics.components.GraphConstants.STATISTIC_MEAN));
%>

<sas:BarLineChart id="bbuSASBarLineChart"
model="barLineChartTableDataModel1" scope="session" >
</sas:BarLineChart>
20 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

2.2.3 sas:LineChart

The sas:LineChart tag creates a line


chart. A line chart shows the
relationship of one variable to another.
Typically these variables have only one
corresponding value on the vertical
axis. This type of chart is best suited to
business-oriented graphs that plot
values against other discrete categorical
values.

<jsp:useBean id="lineChartTableDataModel1" scope="session"


class="com.sas.graphics.components.linechart.
LineChartTableDataModel">
<jsp:setProperty name="lineChartTableDataModel1" property="model"
value="<%=jdbcTableModelAdaptor%>" />
</jsp:useBean>

<%
lineChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
lineChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>

<sas:LineChart id="bbuSASLineChart" model="lineChartTableDataModel1"


scope="session" >
</sas:LineChart>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 21

2.2.4 sas:LinePlot
You can create a line plot using the sas:LinePlot tag. A line plot is typically used to plot x
and y variables, one of which may have contiguous values. In this example, the
population (POPDEN) is a contiguous value, and the territories (IDNAME) are discrete
values.

<jsp:useBean id="linePlotTableDataModel1" scope="session"


class="com.sas.graphics.components.lineplot.LinePlotTableDataModel">
<jsp:setProperty name="linePlotTableDataModel1" property="model"
value="<%=jdbcTableModelAdaptor%>" />
</jsp:useBean>

<%
linePlotTableDataModel1.setXVariable(
new com.sas.graphics.components.PlotVariable("IDNAME"));
linePlotTableDataModel1.setYVariable(
new com.sas.graphics.components.PlotVariable("POPDEN"));
%>

<sas:LinePlot id="bbuSASLinePlot" model="linePlotTableDataModel1"


scope="session" >
</sas:LinePlot>
22 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

2.2.5 sas:PieChart

The newer sas:PieChart tags can create


three-dimensional pie charts, ringed pie
charts, and donut charts. Section 3.5
explains how to use attributes to create
the various types of pie charts.

<jsp:useBean id="pieChartTableDataModel1" scope="session"


class="com.sas.graphics.components.piechart.PieChartTableDataModel">
<jsp:setProperty name="pieChartTableDataModel1" property="model"
value="<%=jdbcTableModelAdaptor%>" />
</jsp:useBean>

<%
pieChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
pieChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>

<sas:PieChart id="bbuSASPieChart" model="pieChartTableDataModel1"


scope="session" >
</sas:PieChart>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 23

2.2.6 sas:RadarChart

The sas:RadarChart tag is new to SAS


AppDev Studio. The spokes that radiate
from the center of the chart can be used to
show the frequency of data measures.
These charts are often used in quality
control and market research.

<jsp:useBean id="radarChartTableDataModel1" scope="session"


class="com.sas.graphics.components.radarchart.
RadarChartTableDataModel">
<jsp:setProperty name="radarChartTableDataModel1" property="model"
value="<%=jdbcTableModelAdaptor%>" />
</jsp:useBean>

<%
radarChartTableDataModel1.setCategoryVariable(
new com.sas.graphics.components.ClassificationVariable("COUNTRY"));
radarChartTableDataModel1.setResponseVariable(
new com.sas.graphics.components.AnalysisVariable("AMOUNT"));
%>

<sas:RadarChart id="bbuSASRadarChart" model="radarChartTableDataModel1"


scope="session" >
</sas:RadarChart>
24 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

2.2.7 sas:ScatterPlot
You can create a scatter plot using the sas:ScatterPlot tag. Scatter plots show a
relationship between one variable and another. They can be very helpful in revealing
trends in the data.

<jsp:useBean id="scatterPlotTableDataModel1" scope="session"


class="com.sas.graphics.components.scatterplot.
ScatterPlotTableDataModel">
<jsp:setProperty name="scatterPlotTableDataModel1" property="model"
value="<%=jdbcTableModelAdaptor%>" />
</jsp:useBean>

<%
scatterPlotTableDataModel1.setXVariable(
new com.sas.graphics.components.PlotVariable("IDNAME"));
scatterPlotTableDataModel1.setYVariable(
new com.sas.graphics.components.PlotVariable("POPDEN"));
%>

<sas:ScatterPlot id="bbuSASScatterPlot"
model="scatterPlotTableDataModel1" scope="session">
</sas:ScatterPlot>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 25

2.3 Common Attributes


The following are common attributes that affect the look and feel of SAS AppDev Studio
3 graph tags. These attributes can be applied to any of the base level graph tags. For each
attribute we review the code that creates the output as well as the HTML that is
generated. This way if you are familiar with HTML it will give you some idea of how the
output is constructed.

alignment

To adjust the alignment of a chart within


the page you can use the alignment
attribute.

Valid values:
Top
Bottom
Middle
Left
Right

<sas:BarChart id="bbuSASBarChart" model="barChartTDM1" scope="session"


alignment="RIGHT" >
</sas:BarChart>

This attribute is applied to the HTML image tag, so it does little to adjust the alignment
on a page by itself. You can insert this tag into a HTML table to position the graph on the
page.
<img name="bbuSASBarChart1" id="bbuSASBarChart1"
src="http://localhost:8080/BBU/StreamContentServlet;
jsessionid=9522F7D4B41DADC4190C3857ACC3DE56?
CONTENT_KEY=bbuSASBarChart1&SRCID=93965" galleryimg="no"
align="RIGHT" usemap="#bbuSASBarChart1" width="400" height="300"
border="0"/>
26 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

alternateText

The alternateText attribute enables


you to define text that is displayed
when the user hovers over graph areas
where data points do not exist, such as
the axis areas and labels. In the HTML
source, this text is defined by the alt
attribute applied to the <img> HTML
tag.

Valid values:
<String>

<sas:BarChart id="bbuSASBarChart" model="barChartTDM1" scope="request"


alternateText="Alternate Text when Hovering" >
</sas:BarChart>

Once this code is rendered, the compiled HTML code looks similar to this:
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet;
jsessionid=0D27E1E4DC8ED61495903F9C4BE9E9DC?
CONTENT_KEY=bbuSASBarChart&SRCID=50196" galleryimg="no"
alt="Alternate Text when Hovering" usemap="#bbuSASBarChart"
width="400" height="300" border="0"/>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 27

appliedColorSchemeName

To apply a predefined color scheme to


your graph, you can use the
appliedColorSchemeName attribute. This
attribute is applied as a preprocessing
event to create the image. Therefore no
HTML tags are generated to apply the
color scheme.

Valid values:
Autumn Bright
Carnival Commerce
Grayscale Industry
Magellan Neon
Ocean Pastel
Picnic Pine
Terra Wheat
Woodland

<sas:PieChart id="bbuSASPieChart" model="pieChartTDM1"


scope="request"
appliedColorSchemeName="Carnival" >
</sas:PieChart>
28 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

appliedGraphStyleName

The appliedGraphStyleName attribute


is very similar to the
appliedColorSchemeName attribute.
This attribute also applies predefined
textures and modifies the look and feel
of the graph with more than just colors.

Valid values:
Analysis Astronomy
Banker Blockprint
Convention Curve
Education Electronics
Gears Magnify
Money Monochrome
RSVP Science
Sketch Statistical
Torn Watercolor

<sas:BarLineChart id="bbuSASBarLineChart" model="barLineChartTDM1"


scope="request" appliedGraphStyleName="Watercolor" >
</sas:BarLineChart>

Have fun with these. You can find examples of the predefined graph styles at
http://support.sas.com/rnd/gendoc/bi/api/Components/com/sas/graphics/components/doc-
files/style-Grid.html.
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 29

borderWidth

To put a border around your graphics


area you can use the borderWidth
attribute. This attribute enables you to
apply a border and control the
thickness.

Valid values:
<Integer>

<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"


scope="request"
borderWidth="5" >
</sas:BarChart>

When this tag is rendered, the border is actually applied to the HTML <img> tag that
produces the graph. Here is an example:
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=60154" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" border="5"/>
30 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

epilog

You can add text to the graph area at


the bottom by using the epilog
attribute of the graph tag.

Valid values:
<String>

<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"


scope="request"
epilog="Epilog Text" >
</sas:BarChart>

The epilog is actually created after the image has been created. This is added as straight
HTML text on your page.
<table cellPadding="0" cellSpacing="0" borderWidth="0" >
<tr>
<div id="divbbuSASBarChart" style="position:absolute">
<td>
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=55190" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" border="0"/>
</td>
</div>
</tr>
</table>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 31

Epilog Text
<map name="bbuSASBarChart">
<area shape="polygon" alt="COUNTRY: Australia AMOUNT: 31167"
coords="86,241,86,241,169,241,169,253,86,253,86,253">

<area shape="polygon" alt="COUNTRY: Canada AMOUNT: 71894"


coords="189,227,189,227,272,227,272,253,189,253,189,253">

<area shape="polygon" alt="COUNTRY: US AMOUNT: 514046"


coords="291,76,291,76,374,76,374,253,291,253,291,253">

</map>

Notice where the “Epilog Text” string is posted on the page after the image but before the
map. The map was automatically generated by the graph tag. In this example, it provides
hover text that shows the country name and amount.

galleryImageVisible
The galleryImageVisible attribute enables you to control whether your graphs are
resizable on the page. In Microsoft Internet Explorer there is a setting under Tools Î
Internet Options Î Advanced Î Multimedia called “Enable Automatic Image
Resizing.” This option, when checked, resizes images that may be too large to fit in the
browser window area. The galleryImageVisible attribute sets this option on or off using a
True or False value. Set to False, the graph image cannot be resized regardless of the
user’s Internet Explorer browser settings.

Valid values:
Boolean (True/False)
32 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

height

The graph’s height can be set using the


height attribute. This attribute applies a
height attribute to the HTML <img> tag
once it is rendered.

Valid values:
<Integer>

<sas:LineChart id="bbuSASLineChart" model="lineChartTDM1"


scope="request" height="450" >
</sas:LineChart>

<img name="bbuSASLineChart" id="bbuSASLineChart"


src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASLineChart&SRCID=21383" galleryimg="no"
usemap="#bbuSASLineChart" width="400" height="450" border="0"/>

Be aware that the radar chart does not resize the image, but rather allots the space to use
for the graph area. Therefore the radar chart is the same size, but the height attribute may
create more white space around the perimeter.
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 33

horizontalSpace
You can use the horizontalSpace attribute to provide padding or white space on the sides
of the image.

Valid values:
<Integer>
<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"
scope="request"
horizontalSpace="200" >
</sas:BarChart>

When the tag renders the image, it applies an hspace attribute to the HTML <img> tag,
similar to this:
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=95403" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" hspace="200"
border="0"/>

image
The image attribute allows you to set the source of the chart you are trying to display.
Although this attribute sounds fairly straightforward, we have not found any practical
uses for it.
34 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

prolog

Similar to the epilog attribute, the


prolog attribute applies text to the
outside of the graph area. The
difference is that the prolog is
applied before the graph is resolved.

Valid values:
<String>

<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"


scope="request"
prolog="Prolog text" >
</sas:BarChart>

The resulting HTML code looks similar to this:


Prolog text
<table cellPadding="0" cellSpacing="0" borderWidth="0" >
<tr>
<div id="divbbuSASBarChart" style="position:absolute">
<td>
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=10877" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" border="0"/>
</td>
</div>
</tr>
</table>
<map name="bbuSASBarChart">
<area shape="polygon" alt="COUNTRY: Australia AMOUNT: 31167"
coords="86,241,86,241,169,241,169,253,86,253,86,253">
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 35

<area shape="polygon" alt="COUNTRY: Canada AMOUNT: 71894"


coords="189,227,189,227,272,227,272,253,189,253,189,253">

<area shape="polygon" alt="COUNTRY: US AMOUNT: 514046"


coords="291,76,291,76,374,76,374,253,291,253,291,253">

</map>

Notice that the string “Prolog Text” is applied to the HTML stream before the image and
map areas.

render
To disable or delay the display of a specific graph, you can use the render attribute. This
takes a Boolean value (True or False). The default value is True. If it is set to False, the
graph does not display with that particular invocation of the graph tag. However, if you
reference the graph tag later in the HTML file, you can display the graph at that time by
changing the render value to True.

Valid values:
Boolean (True/False)
<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"
scope="request"
render="FALSE" >
</sas:BarChart>

This tag can be valuable in lots of applications. For example, you might want to display
or not display the graph based on some passed parameter. Therefore you could do
something like the following:
<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"
scope="request"
render="<%=isRendered%>" >
</sas:BarChart>

This code takes a parameter pulled from the session or request (isRendered) and applies
that passed string directly to the tag. You should be careful when doing this to make sure
the value is indeed a string representing a Boolean value (True or False).
36 SAS Graphics for Java: Examples Using SAS AppDev Studio and the Output Delivery System

verticalSpace
The verticalSpace attribute is similar to the horizontalSpace attribute. The difference is
that white space is applied to the top and bottom (vertical spaces) of the graph area.

Valid values:
<Integer>
<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"
scope="request"
verticalSpace="200" >
</sas:BarChart>

This padding is accomplished when the tag renders the image. It applies a vspace
attribute to the HTML <img> tag, similar to this:
<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=37838" galleryimg="no"
usemap="#bbuSASBarChart" width="400" height="300" vspace="200"
border="0"/>

width

To adjust the width of the graphics


area, you can use the width attribute
with the graphics tag.

Valid values:
<Integer>

<sas:BarChart id="bbuSASBarChart" model="barChartTDM1"


scope="request"
width="450" >
</sas:BarChart>
Chapter 2: SAS AppDev Studio Custom Tags and Attributes for Basic Graphs 37

Here is the resulting HTML source:


<img name="bbuSASBarChart" id="bbuSASBarChart"
src="http://localhost:8080/BBU/StreamContentServlet?
CONTENT_KEY=bbuSASBarChart&SRCID=21644" galleryimg="no"
usemap="#bbuSASBarChart" width="450" height="300" border="0"/>

Note that the width is applied directly to the HTML <img> tag. This can cause you some
problems. For instance, take one of the plots with longer labels. The labels will
unfortunately be shortened automatically. This might not be the desired affect, as shown
below.
Exploring the Variety of Random
Documents with Different Content
"Well met, Miss Enistor," said the elder man in a genial manner and
staring at her very directly. "I was just coming to take Montrose
away."
"Yes," called out Mrs. Barrast, "he is going, and at eleven o'clock too.
So very early. What can we do with the rest of the evening?"
"I advise bed," said Eberstein pointedly.
"Bed for me," endorsed Alice gaily. "I feel rather tired."
"I don't think you do," said the doctor calmly: and to Miss Enistor's
surprise on consideration she did not. But as he spoke she again felt
a wave of that strange uplifting influence and drew back, startled to
find that it emanated from the doctor. Eberstein smiled quietly,
"Good-night!"
"Good-night, Mr. Montrose," said Mrs. Barrast pointedly. "Next time
you come, talk to me as well as to Miss Enistor!"
"I apologise for my bad manners," said Montrose quickly.
"What a compliment to me!" laughed Alice, shrugging her shoulders.
"Oh, you understand me, I think, Miss Enistor," he looked at her
straightly.
She returned his look flushing. "I think I do," was her low reply.
"Such nonsense," said Mrs. Barrast irritably: for her the evening had
not been a success.
CHAPTER VII
BEHIND THE SCENES

It was a delightfully warm summer night when Eberstein and his


young friend left the house. For some little distance they walked on
in silence, as Eberstein was never voluble and Montrose felt
disinclined to speak at the moment. Oblivious of his surroundings,
more or less, he moved mechanically by the doctor's side, dreaming
of Alice and of the love which existed between them. Considering he
had met her for the first time an hour or so previously, it seemed
ridiculous, even in a dream, to think that she had any such tender
feeling for him. But something in the deeps of his own nature was
struggling to the surface to assure him that his dream was truth.
Much as he valued Eberstein's company, he wished him away at the
moment that he might puzzle out the meaning of this strange
intuition.
"But that is impossible, just now," said the doctor quietly. "I wish
you to come to my house, as I have much to say, and something to
show."
Montrose was startled, as he often was at Eberstein's speeches. "You
know what I am thinking about?"
"Is that so strange?"
"Well, it isn't, really. You have extraordinary penetration. Sometimes
I am quite afraid of you."
"You are never afraid of me," replied Eberstein, shaking his head
with a benevolent smile. "Think!"
"No!" Montrose reflected for a few moments. "It is true. I am not
afraid!"
The doctor smiled approvingly. "That is right. Fear would prevent my
aiding you in any way, and you need aid more than you guess.
Remember what the Bible says, my friend: 'In quietness and
confidence shall be your strength.'"
"Faith and peace of mind are so hard to get," complained the young
man sadly.
"Very hard. The Blessed One said that the Path was difficult."
"The Blessed One!"
"Christ: your Master and mine," replied Eberstein solemnly. "Strait is
the gate and narrow is the way which leadeth to life and few there
be that find it."
"And those who do not find it are lost?"
"For the time being, not eternally. God is very gentle with His
straying sheep, and we have many lives, many opportunities to find
the way to the fold. You are coming to the strait gate, Montrose;
therefore my aid is given to you lest you should faint on the hard
uphill journey."
"I am not good enough even to approach the gate," sighed the
young man.
"So you think! But the standard of goodness is not kept on earth,
but in heaven, my friend. However"—Eberstein broke off to hail a
taxi—"we can talk of these things when we reach my house. Get in,
Montrose!"
The young man did so, and was followed by his master, who told the
chauffeur to drive to Bloomsbury. Eberstein lived in that
unfashionable district, not-withstanding the fact that his practice lay
largely amongst wealthy and aristocratic people. Many of the
doctor's patients wondered why he did not select a better-class
neighbourhood, but Eberstein never gave them any information on
this point. Yet his known character might have revealed the reason
to an ordinarily shrewd person very easily. The man was greatly
given to helping the poor and needy. Not so much the proverbial
ragged paupers of the slums—although he helped those also when
necessary—as poor curates, badly paid clerks, shabby governesses,
struggling ladies, and such-like persons, who had to keep up some
sort of appearance on nothing. His money, his sympathy, his medical
skill, were all wholly at the service of those who could not pay, and
the fees received from his rich patients went to ameliorate the
sufferings of the self-respecting, who never complained and showed
their pauperism as little as was possible. Eberstein made no boast of
his philanthropy: he never even spoke of his many good works. It
was perfectly natural for him to go silently attentive about the work
of his Master Christ, as he knew he could act in no other way
without going contrary to his whole being. To feed the hungry, to
clothe the naked, to teach the ignorant, to comfort the desolate: for
these purposes he was in the world.
In one of his exploring expeditions Eberstein had found Montrose
dying in a garret and had set him on his legs again in a sympathetic
brotherly way which had not offended the young man's pride. More
than that, he had supplied food for the starving soul as well as for
the starving body, and by explaining the riddles of Life in a perfectly
reasonable way he had entirely changed Montrose's outlook. His
protégé had been puzzled by this absolutely unselfish conduct, not
understanding from inexperience that no return was demanded for
these great gifts. But as his limitations began to expand through the
teaching, he began to comprehend, and finally he accepted
Eberstein as a kind of angel in the flesh, sent to help him in his hour
of need. And the philanthropist was so unaffectedly sincere, so
reasonable and sympathetic, that the rescued man grew to love him
with a reverence rare in the younger generation. The doctor restored
his faith in human existence.
"Here we are," said Eberstein, alighting from the taxi and dismissing
it. "We can now have an undisturbed hour for conversation."
The doctor admitted himself into the quiet house with his latch-key,
as the servants were all in bed. They were never kept up late by
their considerate employer, since he recognised that they required
their necessary sleep. So the two men entered the hall, ascended
the stairs, and betook themselves to a large room at the very top of
the mansion. Eberstein kept this entirely to himself, not even seeing
his friends therein, much less his patients. Therefore it was with
some surprise and more curiosity that Montrose stepped into the
apartment and closed the door after him. Then he uttered an
exclamation of pleasure—a soft exclamation, for the atmosphere of
the place suggested a church.
"What a wonderful room," breathed Montrose, staring round him,
"and how holy."
He scarcely knew what caused him to utter the last word, unless it
was the unusual looks of the spacious room. Everything was white;
the walls, the carpet, the ceiling, and even the light which radiated
from two large lamps with opaque globes. The table, the few chairs,
the bookcase, and the sofa were of white wood with silken cushions
like mounds of snow, and the draperies which veiled the volumes
and the windows were also the hue of milk. Yet there was no
suggestion of winter in the colourless expanse, for the air was warm
and the atmosphere so charged with perfect peace that Montrose
felt quite at home. The room, he felt, expressed Eberstein himself. It
might have been the chapel of The Holy Grail.
"You never brought me here before," said the young man, feeling
that his dark garments were a blot on the purity of the surroundings,
"although you have known me for three years, more or less."
"No," assented the doctor, seating himself before the table and
indicating a chair for his guest, "it was not necessary."
"Is it necessary to-night?"
"I should not have brought you here, had it not been."
"But why this night of all nights?" persisted the other wonderingly.
"You have met Miss Enistor."
Montrose was more bewildered than ever. "What has she got to do
with it, or with me, or with anything?"
"Ask yourself," said Eberstein, and looked steadily into the eyes of
Montrose.
"I ask myself!" murmured the guest, mechanically compelled to the
speech.
Those kind grey eyes on a level with his own a little distance away
poured, as it seemed, such a flood of light towards him that
Montrose voluntarily closed his own. Yet it was not a dazzling light
which need have frightened him, but an all-enfolding steady
radiance, which bathed his whole being in luminous splendour, until
he felt that he was partaking of that peace of God which passeth
understanding. The tide of glory lifted him up higher and higher
beyond the gross envelope of the physical body until he felt himself
soaring without wings into an all-embracing sphere of glorious music
which expressed itself in colour. In this ocean of rainbow hues he
floated, aware that he was using super-physical senses to view
super-physical scenes. On him descended, with the swiftness of
thought, a golden cloud more brilliant than the noonday sun, and
this dissolved away to reveal the form of a young girl clothed in
floating white draperies. The face was fair, the hair corn-coloured,
the eyes deeply blue and the figure majestic and graceful. Anything
more unlike the elfin beauty of Alice can scarcely be imagined. Yet
he knew beyond all doubt that this was Alice in another shape which
she had worn in another clime under alien stars. His soul flowed out
to blend with her soul in one flame of unity. But there was a barrier
between them which Montrose strove to break through. Try as he
might he could not.
Even in that heaven-world, despair seized him, when he found that
the invisible barrier withheld him from his beloved. On her side she
seemed equally desirous to come to him, and held out her arms in
vain longing. On his face and her face were looks of appealing love
baffled by the impossibility of meeting heart to heart. Then a
shadow grew up between them swiftly; the shadow menacing and
dark of a yellow-skinned man, rather like a Chinese, from whose
throat ran a stream of blood. Who this man was Montrose could not
tell, even though he had recognised Alice in a different guise. And
the enemy—Montrose felt that the wounded creature was an enemy
—grew larger and larger until the blackness of which he was part
blotted out the splendour of the girl. Blotted out also the
atmosphere of colour and music and radiancy, until Montrose,
sinking downward in the gloom, opened his physical eyes to find
himself seated in the chair opposite Eberstein. Only a single moment
had elapsed, for the journey had been as swift as that of Mahomet
to the seventh heaven mounted on Al Borak, but he seemed to have
been away for hours. The discrepancy was to Montrose impossible to
reconcile, even though he grasped confusedly the fact that he had
been—in the Fourth Dimension say—where there is no time.
"You now know what Alice Enistor has to do with you," said
Eberstein in a quiet impressive tone.
"I don't in one way," faltered the still bewildered young man, "and
yet I do in another. All I can be certain of is that she is mine."
"Undoubtedly. She is yours and you are hers."
"Then why could we not come together?"
"The shadow of your sin came between and parted you."
"My sin?"
"That which you committed five thousand years ago," explained the
doctor patiently. "Then, self-willed, self-centred, you would not wait
the striking of the hour which would have made you one, and
therefore, seeking to obtain your desire by force, you broke the
Great Law. The Great Law broke you, as it breaks all who disobey.
For many ages your soul and her soul have been asunder, but now in
the fullness of time you meet again on this physical plane in new
vestments of flesh. But your sin has not yet been expiated, and you
cannot yet be one with her you love. The shadow stands between
you twain and will stand until the debt is paid."
"The shadow—the man?" stammered Montrose confusedly.
"You owe him a life!"
"But he is my enemy. I feel strongly that he is my enemy."
"He was and is: it depends greatly upon you if he continues to be. If
one obeys truly the Law of Love, one must not be angered even with
one's enemy. What says the Blessed Son of the Most High God?"
As if the words had been placed in his mouth, Montrose replied
softly: "Love your enemies, bless them that curse you, do good to
them that hate you, and pray for them which despitefully use you
and persecute you!"
Eberstein bowed his stately head. "Such is the Law of Love."
Rubbing his eyes to make certain that he was entirely awake,
Montrose sought for an interpretation. "I do not quite understand."
"There is no need for you to understand further, my friend. This
much enlightenment has been vouchsafed you through the mercy of
God. For the rest you must work and walk by faith, seeing as in a
glass darkly, obeying the Great Law of your own free will, so that
your unselfish love may cause hatred to cease."
"Whose hatred?"
"That of the man you sinned against. Only with the aid of the
Blessed One!"—Eberstein made the sign of the cross—"can you
prevent the Son of Perdition from descending into the Abyss."
"Who is the Son of Perdition?"
"Your enemy, whom Christ loves as He loves you. Your task is to
make yourself a channel through which the grace of the Blessed One
can freely pour for the salvation of this erring soul. Oh, think how
glorious it is that you should be permitted to be the instrument of
Christ in this mighty work."
"But I do not know how to go about the work!" exclaimed the
bewildered man.
"Watch and pray, my son, for the time when you must act is near at
hand. Only by making yourself receptive to the holy influence will
you know how to act when the time is ripe."
"You will help me?"
"I am bound to help you since I am obedient to the Law. But much
has to be done by yourself, Montrose. I cannot command, as each
man has free-will with which even the Logos Himself does not
interfere. Christ stands at the door of your heart, but will not enter
unless you invite His entrance. Only by doing what you ought to do
will the Spirit of Love enter and sup with you."
"But what am I to do?" demanded Montrose desperately.
"Ask your own heart."
"It says nothing."
"The time is not yet ripe for it to say anything. Watch and pray!
Come," the doctor spoke in a more matter-of-fact tone, "it is growing
late. Go home and sleep: you are becoming exhausted."
"But tell me, Eberstein, if I am right in what I think," pleaded
Montrose earnestly. "I know intuitively that I met Miss Enistor in
some previous life and that I loved her, as I love her now when we
come together for the first time in this incarnation. I had all the
feeling of being her friend. Oh what do I say! Friend is too weak a
word—of being her lover. If I understand rightly, some sin committed
by me has parted us, and that sin I have to expiate before we can
come together again."
"That is the case. But ask me no more now. With the aid of the
Blessed One you must work out your salvation in fear and
trembling."
"Indicate my enemy and I shall forgive him for Alice's sake," cried
the young man with impetuous generosity.
"You must forgive him for his own."
"How can I when I don't know why we are enemies?"
"You will know when it is necessary you should know."
Montrose passed his hands across his brow and stood up slowly. "It
is all bewildering and difficult."
"Very bewildering and very difficult. I answered that question earlier
in the evening. We talk in a circle. To do so is a waste of time. Good-
night!"
Another question was trembling on Montrose's lips, but he refrained
from putting it, and with a silent hand-shake departed slowly.
Accustomed to come and go at will in this house, which was more a
home to him than any habitation he had known, the young man
descended the stairs and let himself out into the silent square. The
balmy summer night was brilliant with stars, and charged with some
mysterious healing influence, which soothed and relaxed his weary
nerves. On all sides the great city was yet awake and alive with
people, each one intent upon the realisation of his or her desire. But
here, isolated from the roaring thoroughfares, the quadrangle was
comparatively lonely and dark, as the passers-by were few and the
lights widely scattered. The central gardens, with their trees and
shrubs and turf and flowers, slept within the rusty iron railings,
speaking every now and then as a wandering breeze woke the
leaves to sigh and whisper. The hurrying steps of a wayfarer, the
measured heavy tread of a policeman, the murmur of distant life:
Montrose heard these things without hearing as it were, as without
seeing he stared at the silent cats gliding through the shadows. He
walked along, wrapped up in his own thoughts, seeking mechanically
his rooms and bed.
Notwithstanding his accession to considerable wealth, the fortunate
youth had but slightly changed his mode of living. He enjoyed better
lodgings, better clothes, more nourishing food, and was free from
the obligation of compulsory work to exist. But he still lived in
unfashionable Bloomsbury, a quiet, inexpensive, and somewhat
recluse life, not seeking to enter what is known as society. With his
good looks and undeniable talents and newly acquired wealth, he
would have been welcome to the gay throng who flutter in the
sunshine of pleasure. But there was nothing in Montrose which
responded to such aimless allurements. Once or twice friends had
taken him to this house and that, where the butterflies gathered,
and on this particular night Eberstein had induced him to dine at
Mrs. Barrast's. But entertainments of all kinds bored Montrose
immensely, and only the presence of Alice had aided him to endure
the shallow chatter of his hostess and the artificiality of his
surroundings. The after-events in Eberstein's room had both startled
and awed him, so that he was still greatly moved by what had taken
place when he reached his modest lodgings.
But, as common sense told him, thinking would not help him, as his
thoughts spun in a circle and always brought him back to the same
point. That point was the meeting with Alice and the weird feelings
which contact with her personality had aroused in him. She belonged
to his life in some way which he could not quite put into words, and
he belonged to hers. They were together and yet apart, but what
parted them it was impossible to say, as the vision had not indicated
in detail the especial sin, or what had led to the commission of that
sin. Soon he would know more—Eberstein had assured him of that.
Therefore it would be best to wait for the knowledge. He had been
given light enough in the darkness of the path to take the next step,
and that light revealed Alice waiting for him to come to her. He was
only too willing to do so, as the feeling that he loved her deeply
grew with overwhelming swiftness. When she knew what was in his
heart and he knew what was in hers, then the next step could be
taken. What it might be and where it would lead to Montrose could
not say.
However, the doctor had given him necessary instructions for the
moment in the phrase "Watch and pray!" To watch for the dawning
love in Alice and to pray that he might be worthy of such love
seemed to be his task, and a very delightful task it would be.
Therefore Montrose knelt down and prayed with all his clean heart
that every possible blessing might befall the girl and that, if it was
God's will, he might become her husband to cherish and protect her.
Then he went to bed in a peaceful frame of mind. Sleep came to him
almost immediately, but before his eyes closed he felt that Alice was
near him, and knew that in some wordless manner Alice spoke to
him.
"We have much to learn and there is pain in the learning," she
whispered, "but we are together to suffer together."
"Suffering does not matter," said Montrose, as in a dream, "we are
together!"
CHAPTER VIII
LOVE'S YOUNG DREAM

After the storm comes the calm, and when trouble has endured for a
season peace descends to refresh the exhausted soul. Montrose had
suffered a great deal during the five-and-twenty years of his present
life, and it was time that he should enjoy a rest. Ever since he could
remember, dark clouds had enshrouded him, and with a fainting
heart he had groped his way through the gloom. The meeting with
Eberstein had been the end of sorrow and the beginning of joy, for
the doctor had bidden him raise his eyes to the hills made glorious
by the rising sun. With the legacy of Lady Staunton the dawn had
come, but only when he met Alice did Montrose feel that the sun
was above the horizon. As by magic the darkness was swept away,
and now he walked in golden sunshine, no longer alone. She was
beside him, and he wondered how he could have endured life
without her dear presence. For the next three weeks he was in
heaven rather than on earth.
Of course the first desire of Montrose was to share with Alice the
wonderful knowledge that he had acquired so strangely. But a note
from Eberstein prevented this. The doctor wrote that he was going
abroad for a few weeks, and that in the meanwhile Montrose was to
tell the girl nothing of his late experiences. "Woo her as an ordinary
youth woos an ordinary maid," said the letter. "She is yours and you
are hers, so nothing can come between you for the time being. I say
for the time being, since there is an ordeal which you must face
before you stand before the altar. Whether you ever do stand there
to take her as your wife depends upon your courage and
forbearance and love. Meantime keep what you have seen and what
you have heard to yourself. When I return I shall explain what is
necessary for you to know!" This note was delivered the first thing in
the morning after Montrose's weird experience, and when he called
round to see Eberstein he found that the doctor had already
departed for Paris. There was nothing left for him to do but to obey
instructions.
Montrose did this very willingly. After all he was a man living in the
world of men, and wished to make love like an ordinary person.
Certainly Alice was an angel, and might not be satisfied with
ordinary love-making, but she also was human, and appreciated the
domesticity of life. Montrose remembered reading in some book
Eberstein had lent him: "For every step you take in other planes,
take two on the plane you know, since you are here to learn the
lessons of this plane!" Thus the young man abandoned for the
moment his search after super-physical knowledge and gave himself
up to the joy of being an ordinary mortal. And in one way or another
he hoped to elevate a commonplace wooing to a romantic passion,
but all strictly within the limitations of the physical brain. When the
gods descended from Olympus to follow after nymphs, they came as
mere men. In a like way did Montrose set about his courting of Alice
as the one woman in the world for him.
Mrs. Barrast quite approved of the romance. For a time she had
been rather annoyed that so handsome and rich a young man had
not laid himself at her feet. But being really good-natured, if
extraordinarily vain, the little woman had ceased to play the part of
dog in the manger, and forwarded the aim of Montrose by every
means in her power. At heart she was a great match-maker like most
women, and the fact that Montrose possessed Lady Staunton's
wealth made her zealous to bring about the marriage. She looked
upon herself as quite a dea ex machinâ, and, certain that all would
turn out as she wished, had already arranged how the bridesmaids
should be dressed, what people ought to be asked to the wedding,
what present she would give, and where the young couple should
spend their honeymoon. There was no doubt that Mrs. Barrast, like
many another frivolous person, was a great hand at counting her
chickens before they were hatched.
"But the dinky little things will come out of the eggs all right," she
said to Alice, a week after that young lady had made the
acquaintance of Montrose. "He's a nice boy and any one can see
he's head over heels in love with you, my dear. But I wish you would
dress in colours, Alice. It looks so silly for an engaged girl to go
about in black."
"I am not engaged yet," replied Miss Enistor doubtfully, "and I never
may be, Amy. My father has to be consulted."
"My dear," said Mrs. Barrast impressively, "he'll jump at the chance
of getting the money back into the family."
"There is Don Pablo, who wants to marry me," ventured Alice
anxiously.
"And there's Julian also," retorted the little woman. "What of that?
Why, I had dozens of offers before I met Frederick, though why I
took him I really don't know. Of course, as you told me this Don
What's-his-name is rich and if Douglas—you don't mind my calling
him Douglas, do you, dear?—was poor, I shouldn't advise you to
throw the old thing over. But youth and good looks and money and
all those nice things are better than an old man. And I am glad after
all that you did not accept Julian," ended Mrs. Barrast candidly. "He
isn't rich either, and life's horrid without money. Besides, I wish
Julian to marry a rich girl."
"If he loves her."
"Pooh, what has love to do with marriage? What old-fashioned ideas
you have, Alice. I suppose you wouldn't marry Douglas if you didn't
love him."
"Certainly not," said the girl firmly.
Mrs. Barrast made a grimace. "It's lucky you like him then, my dear.
Of course it's not right to marry for money only," added the butterfly,
contradicting herself boldly, "but when you meet a man with a
banking account try and love him as hard as ever you can."
"I love Douglas for himself alone. If he was a pauper I should love
him."
"I daresay you would. I'm sure there is madness in your family. It's a
mercy Douglas is well off. Five thousand a year is very nice. Be sure
you make him take a house near ours, dear, and get a smart motor-
car with one of those nice chauffeurs who look like engineers but
aren't. They're lots cleaner than engineers, aren't they? And do wear
a blue dress, dear: blue suits you."
"No! no! I am still in mourning for my aunt."
"I'm sure you needn't be. I wouldn't mourn for a horrid, lean, old
thing—she was lean, you know—who didn't leave me a penny."
"She left my father one thousand pounds, Amy."
"Just enough to make him hate her. I'm sure I would if I'd been
treated in that nasty way. And do make Douglas take you out more.
I'll come too as your chaperon, though perhaps I'm too young for
the part."
"I go out quite enough, Amy. With my aunt in her grave——"
"Oh, don't talk about graves," cried Mrs. Barrast, rising in a hurry,
"you set my nerves on edge, if nerves ever do have an edge, which
I'm sure I don't know if they have. Not that it matters of course. Has
Douglas proposed?"
"No. But we understand one another."
"Oh, my dear," said Mrs. Barrast in despair, "what is the use of that?
I like everything to be signed, sealed, and delivered—I come of a
legal family, you know, dear—to make certain. Don't lose your
salmon after you've hooked him. Men do wriggle, you know, and if
he sees another girl, he will——"
"He won't," interrupted Alice, with very red cheeks. "How can you
talk so? I am the only girl Douglas has ever loved."
"Oh, he told you the usual lie then," sniggered the little woman
provokingly. "How can men be so silly as to think we believe them! I
wish you'd ask him to make love here, Alice, as I'd like to hear how
he goes about it. It's absurd meeting in Kensington Gardens as you
do. It isn't respectable."
"Then I am not going to be respectable this afternoon," said Alice,
escaping from this wasp, "for we meet there in two hours."
"Make him give you an engagement ring," cried Mrs. Barrast, who
always insisted upon having the last word, "diamonds, you know,
dear. If the engagement is broken you won't want to keep the ring
and can always get market value for the stones. I feel it is only right
that you should have some of that money. Remember what I say,
darling: remember what I say."
Alice, on her way to her own room, did not hear the end of this
speech, although it was screamed out after her. She was rather
offended that Mrs. Barrast should advise Montrose's capture like an
unwilling fish, as if any marriage could possibly be happy with a
reluctant bridegroom. But when putting on her hat, the girl laughed
at her reflection in the mirror, and excused the little woman's well-
meant speech. Amy really did mean well, although she had a rather
brutal way of putting things. Miss Enistor wondered if Frederick had
been bargained for in this mercantile way, and thought it was very
probable. Mrs. Barrast was exceedingly modern, and modern women
are very businesslike in dealing with what was formerly called
romance. The Barrast marriage was a kind of mutual aid society.
Frederick had secured a pretty woman to do the honours of his
house, and Amy had captured a rich husband who supplied her with
plenty of money and let her go her own frivolous way. Alice decided
that the shrewd butterfly had made the best bargain, and was taking
full advantage of her cleverness. Then she put Mrs. Barrast out of
her head and started for the place of meeting in Kensington
Gardens.
It was a warm afternoon, but not too dazzling, as a thin veil of
clouds was drawn across the sky. Alice alighted from her taxi at the
park gates and leisurely walked up the broad path towards the
Round Pond. She preferred to meet Douglas here rather than in the
Hans Crescent house, because Mrs. Barrast would always have been
interrupting. And the girl was sufficiently in love to think that two
was company and three a nuisance. As a matter of fact, she
acknowledged to herself she was as deeply in love with Montrose as
he obviously was with her, though neither of them had put the
feeling into words. On this occasion, however, Alice decided that it
would be just as well to come to some sort of understanding, since it
was probable that she would not remain much longer in town. At
least she fancied so, for her father had been grumbling about the
money she was spending. Of course she had only known Douglas for
seven days, and it was rather early to fall in love with him. But she
felt convinced that in previous lives she had loved the young man,
and that the present wooing was only the continuation of one
interrupted in the distant past. What had interrupted it she could not
say, but this time she was determined to bring it to a head, and
learn for certain if Douglas felt towards her as she felt towards him.
If glances and attentions went for anything, he assuredly did, but
modesty or nervousness apparently prevented his plain speaking.
Expecting at any minute to be summoned back to the gloom of
Tremore, Alice felt that she could not go away without knowing what
Montrose's feelings were. And if he really did love her to the extent
of making her his wife, she gratefully recognised that she would
have some one beside her to resist the pressure put upon her by
Don Pablo and her father.
On arriving at the tree under which she usually met her lover, she
was surprised not to find him waiting for her. His absence piqued
her, especially as she was late, for he certainly should have been
watching for her arrival with his heart in his eyes. With a pout she
sat down on one of the two green chairs and stared unseeingly at
the many children playing about the grass and sailing toy ships on
the Round Pond. What would her father say if he knew that she was
meeting Montrose, and now loved him to the extent of thwarting
Enistor's darling project of uniting her to Narvaez. Poor ignorant girl!
She little knew that Don Pablo by his black arts was keeping Enistor
advised of all that was taking place, and that the two men were
calmly watching her innocent luring of the fly into the web. Eberstein
could have warned her of this infernal espionage, but he was absent,
and neither Alice nor her lover had any knowledge how to guard
themselves. They were even ignorant that protection was necessary,
and it was only when the worst was at an end that they learned how
the guardianship of the master had been withdrawn for the time
being. The children had to learn to walk alone in their own strength
and by their own will. Therefore, in the Garden of Eden represented
by Kensington Gardens, did they lie open to the assault of the
Serpent in the person of Don Pablo. But their ignorance and
innocence and natural leanings towards the good baffled the black
magic of the evil creature for the moment.
"A penny for your thoughts," said Montrose suddenly, and Alice
raised her eyes to find that he had slipped silently into the chair
placed a trifle behind that on which she was seated.
"They are only worth a halfpenny," she retorted rebukingly. "I was
thinking how little you must care for my company when you are so
late!"
"I have been hiding behind yonder tree ever since you arrived,"
explained Montrose, laughing, "and for quite an hour I have been
waiting."
Alice laughed also. The boyishness of his action appealed to her.
"But we are too old to play at Peep Boo like babies," she said,
shaking her head with a would-be attempt at primness which was
quite a failure.
"We are not old," denied Montrose, placing his chair in line with
hers. "We are young: we shall always be young, for the gods love
us. As to babies, look into my eyes and you will see yourself as a
baby."
But Alice would not look, and the colour came to her cheeks. "There
was a girl at school who talked of babies in the eyes. It was amusing
to hear her talk, but rather silly."
"The silly things are the serious things of life at this moment."
"How do you explain that epigram, Mr. Montrose?"
"Do epigrams require explanations?"
"This one does, I fancy."
"Oh, no, it doesn't. You must guess that the explanation lies in the
words I used. 'At this moment,' I said."
"Why this moment rather than others, Mr. Montrose?"
The young man drew back rather disappointed. "No. I see you don't
understand, Miss Enistor, or you would not call me Mr. Montrose."
"You call me Miss Enistor!" replied Alice, wilfully dense.
For the sake of beating her with her own weapons, he answered in
kind. "Naturally I do. I am a very polite person. But I daresay, in
other lives, in other climes, and when we were clothed in other
bodies, I called you Chloe, or Octavia, or Isabeau, or Edith."
"Greek, Roman, French, and Anglo-Saxon," commented Alice,
amused; "you seem to have settled the countries we lived in. I
suppose I called you Damon, or Marcus, or Jehan, or Harold—that is,
supposing we were together in those days in those places."
"We have always been together," said Douglas decisively. "I am quite
sure."
"Have you any proof?"
"Only the proof of my own feelings. I am not clairvoyant to the
extent of remembering my former incarnations, nor can I—as some
can—consciously leave my physical body at will and return to it with
a recollection of what I have seen. Now you are more advanced."
"Indeed, I am not. I have learned much from my father, who knows
a great deal about such psychic matters. But I have never been
properly instructed and my knowledge is very limited."
"But you believe in the doctrine of reincarnation?" urged Montrose
eagerly.
"Of course. It is a most sensible doctrine to believe, and explains
nearly everything in a common-sense way. But I cannot prove my
belief."
"There is no need to prove it to me," said Montrose, thinking of his
vision, "for I know beyond all question that we have lived and loved
before."
"Yes," assented the girl dreamily, "I knew you the moment you
entered Mrs. Barrast's drawing-room."
The young man glanced round, and, seeing that they were more or
less sheltered from observation, gently took her hand. She did not
remove it, although her whole body thrilled to the touch. "You knew
me as what?" asked Montrose.
"I can't say more than that I knew you as a familiar friend."
"So cold a word," pleaded the other softly.
"What other word can I use to you when we have only known each
other for a single week?"
"That is in this life. In other existences we knew each other for
years."
Alice looked down timidly. "It—is—probable," she breathed.
"Then why not take up the new life at the point where the old one
left off?"
"We don't know how it left off, Mr. Montrose."
"No. But assuredly it did at a point where you called me by my then
Christian name—Alice."
Her heart fluttered as he spoke thus intimately. "Perhaps we were
not Christians," she said, rather embarrassed.
"Ah!" he dropped her hand, "you are fencing. I merely spoke in the
style of to-day to illustrate my point."
"Now you are angry!"
"I never could be angry with you; only you will not understand."
"Perhaps I do," said Alice, with a whimsical smile.
"If so, why aren't you plain with me?" said Montrose, ruffled.
The mothering instinct, which makes every woman see in every man
a child to be soothed and petted, rose within her. "Let us slap the
bad, naughty table that has hurt baby," she said demurely, and
Montrose looked up to see the laughter in her eyes.
"You little witch!" He caught her hand again and this time so roughly
that she winced at the delicious pain. "You know quite well what I
mean."
"I do—Douglas!"
"Oh!" He leaned towards her so violently that she swung aside in
alarm.
"The eyes of Europe are on us," she said hastily, indicating the
throng of children and nursemaids and grown-up people round the
pond and on the paths and lying on the grass.
"Bother the eyes of Europe." But he saw that she was right and he
did not dare proclaim his love by taking her in his arms. It was
rather a poor thing to content himself with squeezing her hand. But
he did, and so hard that she uttered an exclamation.
"Mr. Montrose, you are hurting me."
"Am I? Poor hand! I wish I could kiss it!" with a swift look round, he
managed to do so. "There—Alice. Don't you dare to call me anything
but Douglas."
"I believe you wish to take me by storm," she pouted, not ill-
pleased.
"What! capture my own city?"
"Your own city? What do you mean?"
"I mean that I dwell in your heart. That city is mine."
"How conceited you are."
"Indeed, I am not. You know quite well that I am only speaking the
truth. I loved you in the past and I love you now. All preliminaries of
love were gone through ages ago. Why fence, as if we now meet for
the first time? When I saw you in Mrs. Barrast's drawing-room I said,
'She is mine!' When you saw me you said, 'I am his'——"
"I'm sure I didn't," interrupted Alice hastily.
"You thought it, though."
"I shan't tell you."
"There is no need for you to do so. Oh, my dear," he went on
entreatingly, "is there so much love in the world that you and I can
afford to throw what we possess away? All my life I have been
lonely: all my life I have wanted to meet you, to adore you, to——"
"How could you when you didn't know that I existed?"
"Fencing again. As if you didn't know that spirit is everything and
form is nothing. We have been apart on earth until last week; but
we have always been together in higher worlds, although neither
you nor I can remember our companionship."
Alice laughed in a rather anxious manner. "Any one listening to us
would be certain both of us were insane."
"I daresay. But as no one is listening, it doesn't matter. For the
convenience of a world that doesn't understand such things, let us
behave in a conventional manner. I shall visit at Mrs. Barrast's and
court you in the approved style. In due time I shall write and ask
your father if I may make you my wife. Meanwhile I want your
assurance that you love me and have always loved me in the past."
"But a single week——"
"Time doesn't matter. You know it doesn't. You love me, Alice?"
"Yes!" She saw that the time for fencing was ended. "I love you,
Douglas!"
He kissed her hand again, then, aware that the place was too public
for him to take her in his arms, suppressed his feelings. Side by side
they sat in a stiff kind of way, while each longed for demonstrations
which the situation forbade. It was decidedly uncomfortable to be
thus conventional. But it was just as well that they thus came to an
understanding in the eye of the sun, as the self-control was quite an
education.
"One would think we were a couple of old married people, sitting
side by side in this stiff manner," said Montrose with a vexed laugh.
"I should like to be a Sabine and carry you away by force."
"Perhaps you will have to do so," said Alice, thinking of Don Pablo.
"My father will never consent to my becoming your wife."
Montrose looked amazed and anxious. "Why not? There is nothing
against my character and position," he said rapidly, "and as I have
inherited Lady Staunton's money, your father will be glad that I
should bring it into the Enistor family again by making you my wife."
"I don't think my father cares anything about the money," said Alice,
ignorant of her parent's true feelings. "He wants me to marry Don
Pablo."
"A Spaniard. Who is he?"
"A Spaniard, as you have said. He is my father's greatest friend."
"Young and handsome and wealthy?"
"Wealthy, certainly. But very ugly, just like a mummy, and as old as
the hills—older, I believe. He must be eighty."
"Then why does your father wish you to marry him?"
"Because Don Pablo is rich."
"Well, I am rich also. Five thousand a year is riches."
"Don Pablo has more, I fancy."
"I don't care what he has. He hasn't got you for a wife and he never
will have. You will marry me and no one else."
"Yes, I promise you that, Douglas. But there will be trouble."
"Pooh!" Montrose laughed joyously. "I'd face a universe of trouble if
you were the prize to be obtained by enduring it. Besides, Eberstein
says that we belong to one another."
"How does he know?"
"He knows many things that are strange and true. When he comes
back he will explain. He promised to do so. Meantime, all we have to
do is to be true to one another. We are engaged. Say we are
engaged, Alice."
"Yes. We are engaged. I shall marry no one but you."
"Hurrah! Then we shall be happy for ever and ever——"
"Amen," said the girl thankfully. "All the same, I fear Don Pablo."
Montrose tucked her arm within his own. "We are together," he said.
"Unity is strength. You understand, dear!" And Alice did understand,
smiling happily.
"It is the birthday of the soul," she said; "of your soul and mine,
which are one."
CHAPTER IX
THE WARNING

Mindful that a premature engagement might lead to gossip,


Montrose and his beloved acted with great discretion. They gave
vent to their ardent feelings in private, and behaved prudently in
public. Certainly the young man paid many visits to Mrs. Barrast's
house, and was markedly attentive to her visitor. But it was natural
that a bachelor should admire a pretty maid, so people merely
remarked indulgently that evidently Montrose was falling in love with
Miss Enistor. They little knew that the inevitable had already
happened, and in a scandalously short space of time. Mrs. Barrast,
with a shrewdness which did her credit, guessed that the couple
understood one another better than they would admit; but even she
did not guess how far matters had gone. She would have been
annoyed had she really known the truth, not because of the private
engagement, but for the simple reason that she had not been
admitted into the confidence of the lovers. As it was, all she saw led
her to believe that Montrose was conventionally approaching her
guest with a view to marriage, and quite approved of his intentions.
Therefore she welcomed him to the house, and made use of him
and his money. It was only right, she thought, that he should pay for
her kindness in forwarding his aims.
And the payment took the form of Mrs. Barrast plundering Montrose
on all and every occasion. Frederick supplied her with ample funds
for her frivolity, but Mrs. Barrast always wanted more than she could
reasonably obtain, and cleverly got what she desired from Douglas.
As both lovers were in deep mourning for Lady Staunton, the aunt of
one and the benefactress of the other, they did not take much part
in the gaieties of the waning season. All the same, Mrs. Barrast
made Montrose give her concert tickets and boxes at theatres, which
she used freely for herself and her friends. And as on these
occasions she usually left Alice to entertain the donor in the Hans
Crescent house, the young man was quite willing to be lavish in this
direction. Indeed, he was in others also, for he supplied the butterfly
with flowers and scent and gloves and similar trifles, which every
woman likes to have and which no woman likes to pay for. Alice did
not object at the outset to this generosity, as it was necessary to
keep Mrs. Barrast in a good temper; but in the end she protested
against such wholesale robbery.
"You will ruin Mr. Montrose if you take everything he gives you," she
said to Amy, two weeks after that momentous agreement in
Kensington Gardens.
"Oh, nonsense!" replied Mrs. Barrast airily. "The man has got more
money than he knows what to do with. It's a man's duty to be
agreeable. But of course, dear, if you are jealous——"
"I—jealous?"
Mrs. Barrast shrugged her elegant shoulders. "Well, my dear, it looks
like it, you know. You needn't be if you are, I'm sure, for I can't
marry him, and I have no intention of running away with the dear
thing."
"He wouldn't run away with you if you wanted to," said Alice crossly,
and could have bitten out her tongue for the speech.
"Really!" Mrs. Barrast tittered significantly. "Has it gone as far as
that?"
"What do you mean?" Alice grew red.
"My dear! You are a woman talking to a woman, so there is no need
for you to try and deceive me. You want to marry this charming
young fellow!"
"I don't admit that, Amy."
"Whether you admit it or deny it, what I state is the case."
"You have no right to say so. I like Mr. Montrose. I admire him!"
"Words! Words! Words! You love him. Look at yourself in the glass,
my dear. I think your colour tells the truth."
"What if it does?"
"Ah! Then you admit that I am right?"
Alice saw that it was useless to fence with Mrs. Barrast, who was
much too clever to be deceived and far too dangerous to be
tampered with. "Yes! I am in love with—Mr. Montrose."
"Why not say with Douglas?" tittered the little woman.
"Douglas, if it pleases you."
"My dear, the question is if it pleases you and—him. Am I blind?"
asked Mrs. Barrast dramatically. "Am I a fool? Do you think that
during the past three weeks I have left you and that nice boy
together without guessing the truth ages and ages ago? I never ask
for tickets. He gives them to me to get me out of the way, which"—
ended the butterfly justly—"is not complimentary to me."
"I don't mind Mr.—well then, Douglas, giving you boxes at the
theatres," said Alice petulantly; "but why take flowers and gloves
and——"
"Because I want such things," retorted Mrs. Barrast coolly. "If you
are foolish enough not to take presents from him, I don't see why I
should not. But I am glad that we have come to an understanding,
dear, as I wish to know if you are in earnest, or if you are merely
flirting."
"And if I am flirting?"
"Then I think it's very horrid of you. He has a heart and hearts can
be broken. I don't flirt myself," said Mrs. Barrast, uttering the lie with
the greatest composure, "but if you are making a fool of that nice
boy I shall take him off your hands and be a—a—well, a mother to
him."
Alice laughed outright. "You are much too young and pretty to be a
mother to any one, Amy!"
"That's right. Taunt me because I haven't any children. Frederick is
always complaining, as if it was my fault, which I'm sure it isn't. But
as to this flirting——"
"It isn't flirting. Douglas and I understand one another."
"Really. How sly you are! Has he said anything?"
"All that I wished him to say."
"Then he has proposed?"
"Yes!" Alice contented herself with the affirmative and did not
trouble to give the date of the proposal. Mrs. Barrast understood
that it had taken place within the last day or so, and even that
displeased her.
"It's quite immoral for him to be so hasty," she exclaimed, because
the idea of Montrose adoring Alice and not herself was annoying and
hurt her vanity.
The girl smiled, wondering what her hostess would say if she knew
that the proposal had been made three weeks previously. "He's in
love, you see!"
"There is sense in all things, my dear. He has only known you a
month."
"Of course! But love at first sight——"
"I don't believe in such a thing."
"Oh, Amy, what about Romeo and Juliet?"
"They are only things in a play. I don't think Juliet was at all
respectable, and if she had lived in London instead of Verona, I
should never have allowed her to visit me. Mr. Montrose should have
behaved himself properly."
"What do you call proper behaviour on his part?"
"Well, he should have spoken to me first!"
"Douglas's idea of propriety differs from yours, Amy. He thought it
was best to tell my father that he wished to marry me, before
speaking to you."
"He could do no less," snapped Mrs. Barrast, still ruffled. "Has he
written to Mr. Enistor?"
"Yes. Two days ago; but he has not yet received an answer. Nor
have I, for I wrote to my father at the same time, asking him to
consent to our engagement."
"Oh, he'll consent quick enough—your father, that is," sniffed the
little woman. "He owes me a great deal for bringing back that lost
money to the family. If he is nice—I suppose he is nice, though
Julian doesn't like him at all—I expect he'll give me a bracelet, or a
muff-chain, or a——"
"Do you really mean that?" interrupted Alice, opening her eyes very
wide.
"Of course! Why shouldn't I mean what I say?"
"How rapacious you are, Amy."
"What a nasty word when I'm only sensible. What is the use of men
if they don't give us things?"
"Douglas will give you all you want, dear. After all, you brought us
together."
This diplomatic remark cleared the air and banished the frown from
Mrs. Barrast's small-featured face. "Of course I did. I saw that you
two were meant for each other the moment you set eyes on one
another. I advised you to get back your aunt's money by marriage,
didn't I?"
"You certainly did," admitted Miss Enistor dryly, not thinking it
necessary to explain that she loved Montrose for himself alone.
"What you said has come true, Amy. Douglas desires to make me his
wife, if my father consents."
"Oh, bother your father," cried Mrs. Barrast vigorously. "What does
his consent matter when you have hooked a rich man?"
"Don't be vulgar, Amy!" said Alice, wincing.
"And don't be romantic. You can't deceive me. Mr. Montrose is rich."
"I would marry him without a sixpence."
"So you will," rejoined Mrs. Barrast caustically. "He has the sixpence,
remember. I am glad, dear: you have played your cards well.
Frederick will be pleased. He likes Mr. Montrose immensely, and you
a great deal."
"I am glad he does," said Alice soberly, "but don't say anything until
we hear from my father, Amy!"
It was with some difficulty that Miss Enistor induced the little woman
to be silent, for Mrs. Barrast was so immensely pleased with what
she took to be her own cleverness in bringing the matter to a
favourable issue that she wanted to trumpet the news all over the
place. There was no word now of impropriety or hasty wooing, for
Alice let the butterfly think that the match was quite of her own
making, and the butterfly spread sheltering wings over the happy
pair. She did not tell Frederick, and as Frederick was wholly occupied
with politics he did not see what was going on under his very nose.
But with many mysterious becks and smiles and significant looks,
the little woman managed to intimate that she was the fairy
godmother of these particular lovers, whose romance was rapidly
progressing towards fulfilment. Thus she made everything safe in a
respectable way for Montrose to be constantly invited to dinner, and
to be left alone with Alice more frequently than would have met with
public approval had he not been courting. The young man's
gratitude showed itself substantially and took the form of several
pieces of jewellery, which the guardian angel was pleased to accept.
Everything went as merry as a marriage bell, pending the reply of
Enistor to Montrose's letter. That came four days after Alice had
remonstrated with Mrs. Barrast for her shameless looting.
Mr. Enistor had written not only to Montrose but to his daughter with
regard to the proposal, and when the two came together on this
particular evening, they let one another know immediately that the
fatal missives had been received. Luckily Mrs. Barrast, with a merry
party, had gone to the Empire Music Hall and would not return until
late. Montrose, as usual, had provided the box, purposely having
done so to rid himself of an inconvenient third. Frederick was at the
House, so he could not interfere, and Douglas had Alice all to
himself in the large drawing-room. Mrs. Barrast, for the sake of
propriety, had made him promise to await her return and have
supper. Therefore everything was nicely arranged, and when quite
alone, the lovers sat together on the sofa and looked into one
another's eyes.
"Now," said Alice breathlessly, "the letters!"
"Not just yet," replied Montrose, taking her in his arms, "remember I
have not seen you for forty-eight hours!"
"Oh, you foolish boy!"
Alice had some excuse for calling him so, although she liked the
foolishness he displayed immensely. He dropped on his knees,
holding her waist in his arms, and said all manner of delightful
things, only interrupting his speeches to kiss her again and again
and again. What he babbled need not be reported, as the talk of
lovers, however pleasing to themselves, is extraordinarily silly when
repeated to others. But the splendid glamour of love was over this
pair, and what Douglas said sounded sublimely sensible to the girl,
while the looks of Alice were those of a goddess to her adorer. Yet
Montrose was a common-sense young man, and Miss Enistor only a
tolerably pretty girl. The misleading passion of love excused each
regarding the other as a divinity. They certainly did so and were as
foolishly happy as Antony and Cleopatra were in their day of power.
And like those famous lovers they would have regarded the world as
well lost for love.
"But really!" cried Alice at last, recovering her reason first, which was
natural since she was a woman, "we must be sensible."
"I think we are very sensible indeed."
"Other people would not think so."
"Why trouble about other people?" replied Montrose, reluctantly
getting on his feet. "There are no other people. You and I are alone
in the world."
"Indeed, I think we shall be unless my father consents," sighed Miss
Enistor. "Not that there will be any loneliness with you beside me,"
she added.
"Darling!" Then another kiss and embrace before settling down to
more prosaic conversation. "Tell me, dear, what does he say to you?"
"Much the same as he writes to you, Douglas, I expect." Alice took
the letter from her pocket. "He is not angry as I expected he would
be, and says nothing about Don Pablo. All he desires—so he says—is
my happiness, and if he approves of you he is quite willing that we
should marry."
"If he approves of me," echoed Montrose, reading the paternal letter
over Alice's shoulder, "quite so. But suppose he doesn't approve?"
"Don't try to cross the bridge until you come to it, Douglas. Why
shouldn't my father approve, now that he evidently has given up his
idea of my marrying Don Pablo? Has my father asked you down to
Tremore?"
"Yes!" said Montrose, producing his letter in turn, "how clever of you
to guess that, dearest."
"I did not guess it, as you might have seen if you read my father's
letter properly," said Alice quickly. "He says that he has asked you
down, or intends to ask you down. I don't know which."
"Oh, here is the invitation," remarked the young man, waving his
letter. "Mr. Enistor says that before he can consent to place your
future in my hands he must become well acquainted with me. He
invites me to Tremore for a visit of one month. In four weeks he
hopes to give his decision."
Alice disconsolately replaced her epistle in her pocket and watched
her lover put away his communication. "That doesn't sound very
promising."
"Oh, but I think it does," said Montrose hopefully. "I don't see what
else he could say if he entertains at all the idea of my marrying you.
It is only natural that he should wish to know what kind of a
husband I am likely to be to his adored daughter."
"Oh!" said Alice ironically, "does my father call me that?"
"Twice he calls you that in his letter."
"He doesn't mean it," the girl assured Montrose in a troubled way;
"my father and I endure one another's society, but little love exists
between us. The fault isn't mine, Douglas, as I was willing enough to
love him when I came from school. But father has always kept me at
arm's length, and hitherto my life has been loveless—save for
Julian."
"Julian!" There was a jealous note in the young man's voice. "That is
the name of Mrs. Barrast's brother, is it not?"
"Yes. I call him Julian and he calls me Alice."
"Confound his impudence!" fumed Montrose angrily.
"No impudence at all, Douglas. Julian is my very good friend:
nothing more, I assure you. But if I had not met you, and if my
father had insisted upon my becoming Don Pablo's wife, I should
have married Julian."
"Oh, Alice," in a tone of deep reproach, "do you love him and not
me?"
"No. I respect him. If I loved him you would not now be sitting
beside me."
Still Montrose was not satisfied. "Is he good-looking?"
"Very; in a large stolid Anglo-Saxon way. He's an artist, but I don't
think one would call him clever except as a painter of pictures."
"I see that you don't love him," said Douglas, his brow clearing; "but
does Hardwick—that is his name, isn't it?—love you?"
"No," rejoined Alice promptly, "he thought that he did, but he really
does not in the way a woman wants to be loved. He proposed and I
rejected him on those grounds. Now he understands that I am right,
and we have settled to be great friends."
"All the same you said you would have married him if——"
"If my father had insisted on my becoming the wife of Don Pablo,"
interrupted Alice swiftly. "Can't you understand, Douglas? I detest
this Spaniard, who is such a friend of my father, and of two evils I
was prepared to choose the lesser. I did not want to marry Julian
any more than I wanted to marry Don Pablo. But Julian is at least
human, so——"
"Isn't Don Pablo human?" asked Montrose, interrupting in his turn.
"I don't believe he is," said Alice thoughtfully, "there is something
dreadfully wicked about him. I can't explain, but when you meet him
you will in some way guess my meaning."
"Humph! I shall certainly accept your father's invitation both to see
this Spaniard and Hardwick also."
"And you understand my position?" urged Alice anxiously.
"Yes. I think I do. All the same I want you to assure me positively
that you love no one else but me."
"There is no need to tell you what you already know," returned the
girl in a calm positive way. "We are made for one another!"
"Darling!" he caught her in his arms, "I know. But I hope your father
will think as we do."
"He means well," said Miss Enistor with a sigh of relief, "or he would
not ask you down to Tremore."
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

ebookbell.com

You might also like