Saturday, August 31, 2019

Twilight 8. PORT ANGELES

8. PORT ANGELES Jess drove faster than the Chief, so we made it to Port Angeles by four. It had been a while since I'd had a girls' night out, and the estrogen rush was invigorating. We listened to whiny rock songs while Jessica jabbered on about the boys we hung out with. Jessica's dinner with Mike had gone very well, and she was hoping that by Saturday night they would have progressed to the first-kiss stage. I smiled to myself, pleased. Angela was passively happy to be going to the dance, but not really interested in Eric. Jess tried to get her to confess who her type was, but I interrupted with a question about dresses after a bit, to spare her. Angela threw a grateful glance my way. Port Angeles was a beautiful little tourist trap, much more polished and quaint than Forks. But Jessica and Angela knew it well, so they didn't plan to waste time on the picturesque boardwalk by the bay. Jess drove straight to the one big department store in town, which was a few streets in from the bay area's visitor-friendly face. The dance was billed as semiformal, and we weren't exactly sure what that meant. Both Jessica and Angela seemed surprised and almost disbelieving when I told them I'd never been to a dance in Phoenix. â€Å"Didn't you ever go with a boyfriend or something?† Jess asked dubiously as we walked through the front doors of the store. â€Å"Really,† I tried to convince her, not wanting to confess my dancing problems. â€Å"I've never had a boyfriend or anything close. I didn't go out much.† â€Å"Why not?† Jessica demanded. â€Å"No one asked me,† I answered honestly. She looked skeptical. â€Å"People ask you out here,† she reminded me, â€Å"and you tell them no.† We were in the juniors' section now, scanning the racks for dress-up clothes. â€Å"Well, except for Tyler,† Angela amended quietly. â€Å"Excuse me?† I gasped. â€Å"What did you say?† â€Å"Tyler told everyone he's taking you to prom,† Jessica informed me with suspicious eyes. â€Å"He said what?† I sounded like I was choking. â€Å"I told you it wasn't true,† Angela murmured to Jessica. I was silent, still lost in shock that was quickly turning to irritation. But we had found the dress racks, and now we had work to do. â€Å"That's why Lauren doesn't like you,† Jessica giggled while we pawed through the clothes. I ground my teeth. â€Å"Do you think that if I ran him over with my truck he would stop feeling guilty about the accident? That he might give up on making amends and call it even?† â€Å"Maybe,† Jess snickered. ‘†If that's why he's doing this.† The dress selection wasn't large, but both of them found a few things to try on. I sat on a low chair just inside the dressing room, by the three-way mirror, trying to control my fuming. Jess was torn between two – one a long, strapless, basic black number, the other a knee-length electric blue with spaghetti straps. I encouraged her to go with the blue; why not play up the eyes? Angela chose a pale pink dress that draped around her tall frame nicely and brought out honey tints in her light brown hair. I complimented them both generously and helped by returning the rejects to their racks. The whole process was much shorter and easier than similar trips I'd taken with Ren? ¦e at home. I guess there was something to be said for limited choices. We headed over to shoes and accessories. While they tried things on I merely watched and critiqued, not in the mood to shop for myself, though I did need new shoes. The girls'-night high was wearing off in the wake of my annoyance at Tyler, leaving room for the gloom to move back in. â€Å"Angela?† I began, hesitant, while she was trying on a pair of pink strappy heels – she was overjoyed to have a date tall enough that she could wear high heels at all. Jessica had drifted to the jewelry counter and we were alone. â€Å"Yes?† She held her leg out, twisting her ankle to get a better view of the shoe. I chickened out. â€Å"I like those.† â€Å"I think I'll get them – though they'll never match anything but the one dress,† she mused. â€Å"Oh, go ahead – they're on sale,† I encouraged. She smiled, putting the lid back on a box that contained more practical-looking off-white shoes. I tried again. â€Å"Um, Angela†¦Ã¢â‚¬  She looked up curiously. â€Å"Is it normal for the†¦ Cullens† – I kept my eyes on the shoes – â€Å"to be out of school a lot?† I failed miserably in my attempt to sound nonchalant. â€Å"Yes, when the weather is good they go backpacking all the time – even the doctor. They're all real outdoorsy,† she told me quietly, examining her shoes, too. She didn't ask one question, let alone the hundreds that Jessica would have unleashed. I was beginning to really like Angela. â€Å"Oh.† I let the subject drop as Jessica returned to show us the rhinestone jewelry she'd found to match her silver shoes. We planned to go to dinner at a little Italian restaurant on the boardwalk, but the dress shopping hadn't taken as long as we'd expected. Jess and Angela were going to take their clothes back to the car and then walk down to the bay. I told them I would meet them at the restaurant in an hour – I wanted to look for a bookstore. They were both willing to come with me, but I encouraged them to go have fun – they didn't know how preoccupied I could get when surrounded by books; it was something I preferred to do alone. They walked off to the car chattering happily, and I headed in the direction Jess pointed out. I had no trouble finding the bookstore, but it wasn't what I was looking for. The windows were full of crystals, dream-catchers, and books about spiritual healing. I didn't even go inside. Through the glass I could see a fifty-year-old woman with long, gray hair worn straight down her back, clad in a dress right out of the sixties, smiling welcomingly from behind the counter. I decided that was one conversation I could skip. There had to be a normal bookstore in town. I meandered through the streets, which were filling up with end-of-the-workday traffic, and hoped I was headed toward downtown. I wasn't paying as much attention as I should to where I was going; I was wrestling with despair. I was trying so hard not to think about him, and what Angela had said†¦ and more than anything trying to beat down my hopes for Saturday, fearing a disappointment more painful than the rest, when I looked up to see someone's silver Volvo parked along the street and it all came crashing down on me. Stupid, unreliable vampire, I thought to myself. I stomped along in a southerly direction, toward some glass-fronted shops that looked promising. But when I got to them, they were just a repair shop and a vacant space. I still had too much time to go looking for Jess and Angela yet, and I definitely needed to get my mood in hand before I met back up with them. I ran my fingers through my hair a couple of times and took some deep breaths before I continued around the corner. I started to realize, as I crossed another road, that I was going the wrong direction. The little foot traffic I had seen was going north, and it looked like the buildings here were mostly warehouses. I decided to turn east at the next corner, and then loop around after a few blocks and try my luck on a different street on my way back to the boardwalk. A group of four men turned around the corner I was heading for, dressed too casually to be heading home from the office, but they were too grimy to be tourists. As they approached me, I realized they weren't too many years older than I was. They were joking loudly among themselves, laughing raucously and punching each other's arms. I scooted as far to the inside of the sidewalk as I could to give them room, walking swiftly, looking past them to the corner. â€Å"Hey, there!† one of them called as they passed, and he had to be talking to me since no one else was around. I glanced up automatically. Two of them had paused, the other two were slowing. The closest, a heavyset, dark-haired man in his early twenties, seemed to be the one who had spoken. He was wearing a flannel shirt open over a dirty t-shirt, cut-off jeans, and sandals. He took half a step toward me. â€Å"Hello,† I mumbled, a knee-jerk reaction. Then I quickly looked away and walked faster toward the corner. I could hear them laughing at full volume behind me. â€Å"Hey, wait!† one of them called after me again, but I kept my head down and rounded the corner with a sigh of relief. I could still hear them chortling behind me. I found myself on a sidewalk leading past the backs of several somber-colored warehouses, each with large bay doors for unloading trucks, padlocked for the night. The south side of the street had no sidewalk, only a chain-link fence topped with barbed wire protecting some kind of engine parts storage yard. I'd wandered far past the part of Port Angeles that I, as a guest, was intended to see. It was getting dark, I realized, the clouds finally returning, piling up on the western horizon, creating an early sunset. The eastern sky was still clear, but graying, shot through with streaks of pink and orange. I'd left my jacket in the car, and a sudden shiver made me cross my arms tightly across my chest. A single van passed me, and then the road was empty. The sky suddenly darkened further, and, as I looked over my shoulder to glare at the offending cloud, I realized with a shock that two men were walking quietly twenty feet behind me. They were from the same group I'd passed at the corner, though neither was the dark one who'd spoken to me. I turned my head forward at once, quickening my pace. A chill that had nothing to do with the weather made me shiver again. My purse was on a shoulder strap and I had it slung across my body, the way you were supposed to wear it so it wouldn't get snatched. I knew exactly where my pepper spray was – still in my duffle bag under the bed, never unpacked. I didn't have much money with me, just a twenty and some ones, and I thought about â€Å"accidentally† dropping my bag and walking away. But a small, frightened voice in the back of my mind warned me that they might be something worse than thieves. I listened intently to their quiet footsteps, which were much too quiet when compared to the boisterous noise they'd been making earlier, and it didn't sound like they were speeding up, or getting any closer to me. Breathe, I had to remind myself. You don't know they're following you. I continued to walk as quickly as I could without actually running, focusing on the right-hand turn that was only a few yards away from me now. I could hear them, staying as far back as they'd been before. A blue car turned onto the street from the south and drove quickly past me. I thought of jumping out in front of it, but I hesitated, inhibited, unsure that I was really being pursued, and then it was too late. I reached the corner, but a swift glance revealed that it was only a blind drive to the back of another building. I was half-turned in anticipation; I had to hurriedly correct and dash across the narrow drive, back to the sidewalk. The street ended at the next corner, where there was a stop sign. I concentrated on the faint footsteps behind me, deciding whether or not to run. They sounded farther back, though, and I knew they could outrun me in any case. I was sure to trip and go sprawling if I tried to go any faster. The footfalls were definitely farther back. I risked a quick glance over my shoulder, and they were maybe forty feet back now, I saw with relief. But they were both staring at me. It seemed to take forever for me to get to the corner. I kept my pace steady, the men behind me falling ever so slightly farther behind with every step. Maybe they realized they had scared me and were sorry. I saw two cars going north pass the intersection I was heading for, and I exhaled in relief. There would be more people around once I got off this deserted street. I skipped around the corner with a grateful sigh. And skidded to a stop. The street was lined on both sides by blank, doorless, windowless walls. I could see in the distance, two intersections down, streetlamps, cars, and more pedestrians, but they were all too far away. Because lounging against the western building, midway down the street, were the other two men from the group, both watching with excited smiles as I froze dead on the sidewalk. I realized then that I wasn't being followed. I was being herded. I paused for only a second, but it felt like a very long time. I turned then and darted to the other side of the road. I had a sinking feeling that it was a wasted attempt. The footsteps behind me were louder now. â€Å"There you are!† The booming voice of the stocky, dark-haired man shattered the intense quiet and made me jump. In the gathering darkness, it seemed like he was looking past me. â€Å"Yeah,† a voice called loudly from behind me, making me jump again as I tried to hurry down the street. â€Å"We just took a little detour.† My steps had to slow now. I was closing the distance between myself and the lounging pair too quickly. I had a good loud scream, and I sucked in air, preparing to use it, but my throat was so dry I wasn't sure how much volume I could manage. With a quick movement I slipped my purse over my head, gripping the strap with one hand, ready to surrender it or use it as weapon as need demanded. The thickset man shrugged away from the wall as I warily came to a stop, and walked slowly into the street. â€Å"Stay away from me,† I warned in a voice that was supposed to sound strong and fearless. But I was right about the dry throat – no volume. â€Å"Don't be like that, sugar,† he called, and the raucous laughter started again behind me. I braced myself, feet apart, trying to remember through my panic what little self-defense I knew. Heel of the hand thrust upward, hopefully breaking the nose or shoving it into the brain. Finger through the eye socket – try to hook around and pop the eye out. And the standard knee to the groin, of course. That same pessimistic voice in my mind spoke up then, reminding me that I probably wouldn't have a chance against one of them, and there were four. Shut up! I commanded the voice before terror could incapacitate me. I wasn't going out without taking someone with me. I tried to swallow so I could build up a decent scream. Headlights suddenly flew around the corner, the car almost hitting the stocky one, forcing him to jump back toward the sidewalk. I dove into the road – this car was going to stop, or have to hit me. But the silver car unexpectedly fishtailed around, skidding to a stop with the passenger door open just a few feet from me. â€Å"Get in,† a furious voice commanded. It was amazing how instantaneously the choking fear vanished, amazing how suddenly the feeling of security washed over me – even before I was off the street – as soon as I heard his voice. I jumped into the seat, slamming the door shut behind me. It was dark in the car, no light had come on with the opening of the door, and I could barely see his face in the glow from the dashboard. The tires squealed as he spun around to face north, accelerating too quickly, swerving toward the stunned men on the street. I caught a glimpse of them diving for the sidewalk as we straightened out and sped toward the harbor. â€Å"Put on your seat belt,† he commanded, and I realized I was clutching the seat with both hands. I quickly obeyed; the snap as the belt connected was loud in the darkness. He took a sharp left, racing forward, blowing through several stop signs without a pause. But I felt utterly safe and, for the moment, totally unconcerned about where we were going. I stared at his face in profound relief, relief that went beyond my sudden deliverance. I studied his flawless features in the limited light, waiting for my breath to return to normal, until it occurred to me that his expression was murderously angry. â€Å"Are you okay?† I asked, surprised at how hoarse my voice sounded. â€Å"No,† he said curtly, and his tone was livid. I sat in silence, watching his face while his blazing eyes stared straight ahead, until the car came to a sudden stop. I glanced around, but it was too dark to see anything beside the vague outline of dark trees crowding the roadside. We weren't in town anymore. â€Å"Bella?† he asked, his voice tight, controlled. â€Å"Yes?† My voice was still rough. I tried to clear my throat quietly. â€Å"Are you all right?† He still didn't look at me, but the fury was plain on his face. â€Å"Yes,† I croaked softly. â€Å"Distract me, please,† he ordered. â€Å"I'm sorry, what?† He exhaled sharply. â€Å"Just prattle about something unimportant until I calm down,† he clarified, closing his eyes and pinching the bridge of his nose with his thumb and forefinger. â€Å"Um.† I wracked my brain for something trivial. â€Å"I'm going to run over Tyler Crowley tomorrow before school?† He was still squeezing his eyes closed, but the corner of his mouth twitched. â€Å"Why?† â€Å"He's telling everyone that he's taking me to prom – either he's insane or he's still trying to make up for almost killing me last†¦ well, you remember it, and he thinks prom is somehow the correct way to do this. So I figure if I endanger his life, then we're even, and he can't keep trying to make amends. I don't need enemies and maybe Lauren would back off if he left me alone. I might have to total his Sentra, though. If he doesn't have a ride he can't take anyone to prom†¦Ã¢â‚¬  I babbled on. â€Å"I heard about that.† He sounded a bit more composed. â€Å"You did?† I asked in disbelief, my previous irritation flaring. â€Å"If he's paralyzed from the neck down, he can't go to the prom, either,† I muttered, refining my plan. Edward sighed, and finally opened his eyes. â€Å"Better?† â€Å"Not really.† I waited, but he didn't speak again. He leaned his head back against the seat, staring at the ceiling of the car. His face was rigid. â€Å"What's wrong?† My voice came out in a whisper. â€Å"Sometimes I have a problem with my temper, Bella.† He was whispering, too, and as he stared out the window, his eyes narrowed into slits. â€Å"But it wouldn't be helpful for me to turn around and hunt down those†¦Ã¢â‚¬  He didn't finish his sentence, looking away, struggling for a moment to control his anger again. â€Å"At least,† he continued, â€Å"that's what I'm trying to convince myself.† â€Å"Oh.† The word seemed inadequate, but I couldn't think of a better response. We sat in silence again. I glanced at the clock on the dashboard. It was past six-thirty. â€Å"Jessica and Angela will be worried,† I murmured. â€Å"I was supposed to meet them.† He started the engine without another word, turning around smoothly and speeding back toward town. We were under the streetlights in no time at all, still going too fast, weaving with ease through the cars slowly cruising the boardwalk. He parallel-parked against the curb in a space I would have thought much too small for the Volvo, but he slid in effortlessly in one try. I looked out the window to see the lights of La Bella Italia, and Jess and Angela just leaving, pacing anxiously away from us. â€Å"How did you know where†¦ ?† I began, but then I just shook my head. I heard the door open and turned to see him getting out. â€Å"What are you doing?† I asked. â€Å"I'm taking you to dinner.† He smiled slightly, but his eyes were hard. He stepped out of the car and slammed the door. I fumbled with my seat belt, and then hurried to get out of the car as well. He was waiting for me on the sidewalk. He spoke before I could. â€Å"Go stop Jessica and Angela before I have to track them down, too. I don't think I could restrain myself if I ran into your other friends again.† I shivered at the threat in his voice. â€Å"Jess! Angela!† I yelled after them, waving when they turned. They rushed back to me, the pronounced relief on both their faces simultaneously changing to surprise as they saw who I was standing next to. They hesitated a few feet from us. â€Å"Where have you been?† Jessica's voice was suspicious. â€Å"I got lost,† I admitted sheepishly. â€Å"And then I ran into Edward.† I gestured toward him. â€Å"Would it be all right if I joined you?† he asked in his silken, irresistible voice. I could see from their staggered expressions that he had never unleashed his talents on them before. â€Å"Er†¦ sure,† Jessica breathed. â€Å"Um, actually, Bella, we already ate while we were waiting – sorry,† Angela confessed. â€Å"That's fine – I'm not hungry.† I shrugged. â€Å"I think you should eat something.† Edward's voice was low, but full of authority. He looked up at Jessica and spoke slightly louder. â€Å"Do you mind if I drive Bella home tonight? That way you won't have to wait while she eats.† â€Å"Uh, no problem, I guess†¦Ã¢â‚¬  She bit her lip, trying to figure out from my expression whether that was what I wanted. I winked at her. I wanted nothing more than to be alone with my perpetual savior. There were so many questions that I couldn't bombard him with till we were by ourselves. â€Å"Okay.† Angela was quicker than Jessica. â€Å"See you tomorrow, Bella†¦ Edward.† She grabbed Jessica's hand and pulled her toward the car, which I could see a little ways away, parked across First Street. As they got in, Jess turned and waved, her face eager with curiosity. I waved back, waiting for them to drive away before I turned to face him. â€Å"Honestly, I'm not hungry,† I insisted, looking up to scrutinize his face. His expression was unreadable. â€Å"Humor me.† He walked to the door of the restaurant and held it open with an obstinate expression. Obviously, there would be no further discussion. I walked past him into the restaurant with a resigned sigh. The restaurant wasn't crowded – it was the off-season in Port Angeles. The host was female, and I understood the look in her eyes as she assessed Edward. She welcomed him a little more warmly than necessary. I was surprised by how much that bothered me. She was several inches taller than I was, and unnaturally blond. â€Å"A table for two?† His voice was alluring, whether he was aiming for that or not. I saw her eyes flicker to me and then away, satisfied by my obvious ordinariness, and by the cautious, no-contact space Edward kept between us. She led us to a table big enough for four in the center of the most crowded area of the dining floor. I was about to sit, but Edward shook his head at me. â€Å"Perhaps something more private?† he insisted quietly to the host. I wasn't sure, but it looked like he smoothly handed her a tip. I'd never seen anyone refuse a table except in old movies. â€Å"Sure.† She sounded as surprised as I was. She turned and led us around a partition to a small ring of booths – all of them empty. â€Å"How's this?† â€Å"Perfect.† He flashed his gleaming smile, dazing her momentarily. â€Å"Um† – she shook her head, blinking – â€Å"your server will be right out.† She walked away unsteadily. â€Å"You really shouldn't do that to people,† I criticized. â€Å"It's hardly fair.† â€Å"Do what?† â€Å"Dazzle them like that – she's probably hyperventilating in the kitchen right now.† He seemed confused. â€Å"Oh, come on,† I said dubiously. â€Å"You have to know the effect you have on people.† He tilted his head to one side, and his eyes were curious. â€Å"I dazzle people?† â€Å"You haven't noticed? Do you think everybody gets their way so easily?† He ignored my questions. â€Å"Do I dazzle you?† â€Å"Frequently,† I admitted. And then our server arrived, her face expectant. The hostess had definitely dished behind the scenes, and this new girl didn't look disappointed. She flipped a strand of short black hair behind one ear and smiled with unnecessary warmth. â€Å"Hello. My name is Amber, and I'll be your server tonight. What can I get you to drink?† I didn't miss that she was speaking only to him. He looked at me. â€Å"I'll have a Coke.† It sounded like a question. â€Å"Two Cokes,† he said. â€Å"I'll be right back with that,† she assured him with another unnecessary smile. But he didn't see it. He was watching me. â€Å"What?† I asked when she left. His eyes stayed fixed on my face. â€Å"How are you feeling?† â€Å"I'm fine,† I replied, surprised by his intensity. â€Å"You don't feel dizzy, sick, cold†¦ ?† â€Å"Should I?† He chuckled at my puzzled tone. â€Å"Well, I'm actually waiting for you to go into shock.† His face twisted up into that perfect crooked smile. â€Å"I don't think that will happen,† I said after I could breathe again. â€Å"I've always been very good at repressing unpleasant things.† â€Å"Just the same, I'll feel better when you have some sugar and food in you.† Right on cue, the waitress appeared with our drinks and a basket of breadsticks. She stood with her back to me as she placed them on the table. â€Å"Are you ready to order?† she asked Edward. â€Å"Bella?† he asked. She turned unwillingly toward me. I picked the first thing I saw on the menu. â€Å"Um†¦ I'll have the mushroom ravioli.† â€Å"And you?† She turned back to him with a smile. â€Å"Nothing for me,† he said. Of course not. â€Å"Let me know if you change your mind.† The coy smile was still in place, but he wasn't looking at her, and she left dissatisfied. â€Å"Drink,† he ordered. I sipped at my soda obediently, and then drank more deeply, surprised by how thirsty I was. I realized I had finished the whole thing when he pushed his glass toward me. â€Å"Thanks,† I muttered, still thirsty. The cold from the icy soda was radiating through my chest, and I shivered. â€Å"Are you cold?† â€Å"It's just the Coke,† I explained, shivering again. â€Å"Don't you have a jacket?† His voice was disapproving. â€Å"Yes.† I looked at the empty bench next to me. â€Å"Oh – I left it in Jessica's car,† I realized. Edward was shrugging out of his jacket. I suddenly realized that I had never once noticed what he was wearing – not just tonight, but ever. I just couldn't seem to look away from his face. I made myself look now, focusing. He was removing a light beige leather jacket now; underneath he wore an ivory turtleneck sweater. It fit him snugly, emphasizing how muscular his chest was. He handed me the jacket, interrupting my ogling. â€Å"Thanks,† I said again, sliding my arms into his jacket. It was cold – the way my jacket felt when I first picked it up in the morning, hanging in the drafty hallway. I shivered again. It smelled amazing. I inhaled, trying to identify the delicious scent. It didn't smell like cologne. The sleeves were much too long; I shoved them back so I could free my hands. â€Å"That color blue looks lovely with your skin,† he said, watching me. I was surprised; I looked down, flushing, of course. He pushed the bread basket toward me. â€Å"Really, I'm not going into shock,† I protested. â€Å"You should be – a normal person would be. You don't even look shaken.† He seemed unsettled. He stared into my eyes, and I saw how light his eyes were, lighter than I'd ever seen them, golden butterscotch. â€Å"I feel very safe with you,† I confessed, mesmerized into telling the truth again. That displeased him; his alabaster brow furrowed. He shook his head, frowning. â€Å"This is more complicated than I'd planned,† he murmured to himself. I picked up a breadstick and began nibbling on the end, measuring his expression. I wondered when it would be okay to start questioning him. â€Å"Usually you're in a better mood when your eyes are so light,† I commented, trying to distract him from whatever thought had left him frowning and somber. He stared at me, stunned. â€Å"What?† â€Å"You're always crabbier when your eyes are black – I expect it then,† I went on. â€Å"I have a theory about that.† His eyes narrowed. â€Å"More theories?† â€Å"Mm-hm.† I chewed on a small bite of the bread, trying to look indifferent. â€Å"I hope you were more creative this time†¦ or are you still stealing from comic books?† His faint smile was mocking; his eyes were still tight. â€Å"Well, no, I didn't get it from a comic book, but I didn't come up with it on my own, either,† I confessed. â€Å"And?† he prompted. But then the waitress strode around the partition with my food. I realized we'd been unconsciously leaning toward each other across the table, because we both straightened up as she approached. She set the dish in front of me – it looked pretty good – and turned quickly to Edward. â€Å"Did you change your mind?† she asked. â€Å"Isn't there anything I can get you?† I may have been imagining the double meaning in her words. â€Å"No, thank you, but some more soda would be nice.† He gestured with a long white hand to the empty cups in front of me. â€Å"Sure.† She removed the empty glasses and walked away. â€Å"You were saying?† he asked. â€Å"I'll tell you about it in the car. If†¦Ã¢â‚¬  I paused. â€Å"There are conditions?† He raised one eyebrow, his voice ominous. â€Å"I do have a few questions, of course.† â€Å"Of course.† The waitress was back with two more Cokes. She sat them down without a word this time, and left again. I took a sip. â€Å"Well, go ahead,† he pushed, his voice still hard. I started with the most undemanding. Or so I thought. â€Å"Why are you in Port Angeles?† He looked down, folding his large hands together slowly on the table. His eyes flickered up at me from under his lashes, the hint of a smirk on his face. â€Å"Next.† â€Å"But that's the easiest one,† I objected. â€Å"Next,† he repeated. I looked down, frustrated. I unrolled my silverware, picked up my fork, and carefully speared a ravioli. I put it in my mouth slowly, still looking down, chewing while I thought. The mushrooms were good. I swallowed and took another sip of Coke before I looked up. â€Å"Okay, then.† I glared at him, and continued slowly. â€Å"Let's say, hypothetically of course, that†¦ someone†¦ could know what people are thinking, read minds, you know – with a few exceptions.† â€Å"Just one exception,† he corrected, â€Å"hypothetically.† â€Å"All right, with one exception, then.† I was thrilled that he was playing along, but I tried to seem casual. â€Å"How does that work? What are the limitations? How would†¦ that someone†¦ find someone else at exactly the right time? How would he know she was in trouble?† I wondered if my convoluted questions even made sense. â€Å"Hypothetically?† he asked. â€Å"Sure.† â€Å"Well, if†¦ that someone†¦Ã¢â‚¬  â€Å"Let's call him ‘Joe,'† I suggested. He smiled wryly. â€Å"Joe, then. If Joe had been paying attention, the timing wouldn't have needed to be quite so exact.† He shook his head, rolling his eyes. â€Å"Only you could get into trouble in a town this small. You would have devastated their crime rate statistics for a decade, you know.† â€Å"We were speaking of a hypothetical case,† I reminded him frostily. He laughed at me, his eyes warm. â€Å"Yes, we were,† he agreed. â€Å"Shall we call you ‘Jane'?† â€Å"How did you know?† I asked, unable to curb my intensity. I realized I was leaning toward him again. He seemed to be wavering, torn by some internal dilemma. His eyes locked with mine, and I guessed he was making the decision right then whether or not to simply tell me the truth. â€Å"You can trust me, you know,† I murmured. I reached forward, without thinking, to touch his folded hands, but he slid them away minutely, and I pulled my hand back. â€Å"I don't know if I have a choice anymore.† His voice was almost a whisper. â€Å"I was wrong – you're much more observant than I gave you credit for.† â€Å"I thought you were always right.† â€Å"I used to be.† He shook his head again. â€Å"I was wrong about you on one other thing, as well. You're not a magnet for accidents – that's not a broad enough classification. You are a magnet for trouble. If there is anything dangerous within a ten-mile radius, it will invariably find you.† â€Å"And you put yourself into that category?† I guessed. His face turned cold, expressionless. â€Å"Unequivocally.† I stretched my hand across the table again – ignoring him when he pulled back slightly once more – to touch the back of his hand shyly with my fingertips. His skin was cold and hard, like a stone. â€Å"Thank you.† My voice was fervent with gratitude. â€Å"That's twice now.† His face softened. â€Å"Let's not try for three, agreed?† I scowled, but nodded. He moved his hand out from under mine, placing both of his under the table. But he leaned toward me. â€Å"I followed you to Port Angeles,† he admitted, speaking in a rush. â€Å"I've never tried to keep a specific person alive before, and it's much more troublesome than I would have believed. But that's probably just because it's you. Ordinary people seem to make it through the day without so many catastrophes.† He paused. I wondered if it should bother me that he was following me; instead I felt a strange surge of pleasure. He stared, maybe wondering why my lips were curving into an involuntary smile. â€Å"Did you ever think that maybe my number was up the first time, with the van, and that you've been interfering with fate?† I speculated, distracting myself. â€Å"That wasn't the first time,† he said, and his voice was hard to hear. I stared at him in amazement, but he was looking down. â€Å"Your number was up the first time I met you.† I felt a spasm of fear at his words, and the abrupt memory of his violent black glare that first day†¦ but the overwhelming sense of safety I felt in his presence stifled it. By the time he looked up to read my eyes, there was no trace of fear in them. â€Å"You remember?† he asked, his angel's face grave. â€Å"Yes.† I was calm. â€Å"And yet here you sit.† There was a trace of disbelief in his voice; he raised one eyebrow. â€Å"Yes, here I sit†¦ because of you.† I paused. â€Å"Because somehow you knew how to find me today†¦ ?† I prompted. He pressed his lips together, staring at me through narrowed eyes, deciding again. His eyes flashed down to my full plate, and then back to me. â€Å"You eat, I'll talk,† he bargained. I quickly scooped up another ravioli and popped it in my mouth. â€Å"It's harder than it should be – keeping track of you. Usually I can find someone very easily, once I've heard their mind before.† He looked at me anxiously, and I realized I had frozen. I made myself swallow, then stabbed another ravioli and tossed it in. â€Å"I was keeping tabs on Jessica, not carefully – like I said, only you could find trouble in Port Angeles – and at first I didn't notice when you took off on your own. Then, when I realized that you weren't with her anymore, I went looking for you at the bookstore I saw in her head. I could tell that you hadn't gone in, and that you'd gone south†¦ and I knew you would have to turn around soon. So I was just waiting for you, randomly searching through the thoughts of people on the street – to see if anyone had noticed you so I would know where you were. I had no reason to be worried†¦ but I was strangely anxious†¦Ã¢â‚¬  He was lost in thought, staring past me, seeing things I couldn't imagine. â€Å"I started to drive in circles, still†¦ listening. The sun was finally setting, and I was about to get out and follow you on foot. And then -† He stopped, clenching his teeth together in sudden fury. He made an effort to calm himself. â€Å"Then what?† I whispered. He continued to stare over my head. â€Å"I heard what they were thinking,† he growled, his upper lip curling slightly back over his teeth. â€Å"I saw your face in his mind.† He suddenly leaned forward, one elbow appearing on the table, his hand covering his eyes. The movement was so swift it startled me. â€Å"It was very†¦ hard – you can't imagine how hard – for me to simply take you away, and leave them†¦ alive.† His voice was muffled by his arm. â€Å"I could have let you go with Jessica and Angela, but I was afraid if you left me alone, I would go looking for them,† he admitted in a whisper. I sat quietly, dazed, my thoughts incoherent. My hands were folded in my lap, and I was leaning weakly against the back of the seat. He still had his face in his hand, and he was as still as if he'd been carved from the stone his skin resembled. Finally he looked up, his eyes seeking mine, full of his own questions. â€Å"Are you ready to go home?† he asked. â€Å"I'm ready to leave,† I qualified, overly grateful that we had the hour-long ride home together. I wasn't ready to say goodbye to him. The waitress appeared as if she'd been called. Or watching. â€Å"How are we doing?† she asked Edward. â€Å"We're ready for the check, thank you.† His voice was quiet, rougher, still reflecting the strain of our conversation. It seemed to muddle her. He looked up, waiting. â€Å"S-sure,† she stuttered. â€Å"Here you go.† She pulled a small leather folder from the front pocket of her black apron and handed it to him. There was a bill in his hand already. He slipped it into the folder and handed it right back to her. â€Å"No change.† He smiled. Then he stood up, and I scrambled awkwardly to my feet. She smiled invitingly at him again. â€Å"You have a nice evening.† He didn't look away from me as he thanked her. I suppressed a smile. He walked close beside me to the door, still careful not to touch me. I remembered what Jessica had said about her relationship with Mike, how they were almost to the first-kiss stage. I sighed. Edward seemed to hear me, and he looked down curiously. I looked at the sidewalk, grateful that he didn't seem to be able to know what I was thinking. He opened the passenger door, holding it for me as I stepped in, shutting it softly behind me. I watched him walk around the front of the car, amazed, yet again, by how graceful he was. I probably should have been used to that by now – but I wasn't. I had a feeling Edward wasn't the kind of person anyone got used to. Once inside the car, he started the engine and turned the heater on high. It had gotten very cold, and I guessed the good weather was at an end. I was warm in his jacket, though, breathing in the scent of it when I thought he couldn't see. Edward pulled out through the traffic, apparently without a glance, flipping around to head toward the freeway. â€Å"Now,† he said significantly, â€Å"it's your turn.†

Proc Report Secreates

PharmaSUG 2012 – Paper TF20-SAS PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software Allison McMahill Booth, SAS Institute Inc. , Cary, NC, USA ABSTRACT Have you ever wondered why a numeric variable is referenced in different forms within a COMPUTE block? Do you know the difference between a DATA step variable and a variable that is listed in the COLUMN statement? Then, this paper is for you! Welcome to PROC REPORT Unwrapped. We are looking at PROC REPORT and uncovering some of the behind-the-scenes details about this classic procedure.We will explore the components associated with PROC REPORT and discover ways to move column headings and change default attributes with styles and CALL DEFINE statements. We will also dig deep into example code and explore the new ability to use multilabel formatting for creating subgroup combinations. So for anyone who has ever written PROC REPORT code, stay tuned. It's PROC REPORT Unwr apped! INTRODUCTION Which popular SAS procedure has features of the PRINT, MEANS, and TABULATE procedures and features of the DATA step in a single report-writing tool?It enables you to create a variety of reports including a detail report, which contains a row of data for every input data set observation, or a summary report, which consolidates data so that each row represents multiple input data set observations. Here is another hint: this same procedure provides the ability to create both default and customized summaries, add text and statistics, and create columns of data that do not exist in the input data set. If you guessed PROC REPORT, you are correct!For anyone who has written PROC REPORT code and has wondered what is going on behind the scenes, this is the paper for you. This paper explores some of the behind-the-scenes secrets of PROC REPORT. We will dig deep into example code as we begin to uncover some of the details of this classic report-writing procedure. As a bonus, you will discover some facts about the REPORT procedure that you might not have known. By the way, the code output in this paper is based on the SAS ® 9. 3 default output destination of HTML. Although most of the paper ontent can also be applied to the LISTING destination, the code that is shown in this paper is intended to be used in an Output Delivery System (ODS) destination, unless otherwise indicated. With that being said†¦are you ready to explore? Welcome to PROC REPORT Unwrapped! EXPLORING THE SECRETS (HOW IT’S MADE) PROC REPORT first began life as a procedure many years ago in SAS ® 6. Since then, it has been gaining popularity as the tool of choice for report writing. Even with such popularity, there are still aspects of the REPORT procedure that can be further explored.In this segment, we will unwrap and explore some of the secrets behind this most popular procedure with a focus on the following components: ? referencing a numeric variable in a COMPUTE blo ck ? exploring the difference between an input data set variable and a DATA step variable ? discovering ways to move column headings ? changing default attributes with styles ? using the CALL DEFINE statement ? exploring the new ability in SAS 9. 3 to use multilabel formatting for creating subgroup combinations Let’s start exploring the secrets! REFERENCING A NUMERIC VARIABLE IN A COMPUTE BLOCKAll numeric variables are referenced the same way, right? Well, that depends on how the numeric variable is defined in the PROC REPORT DEFINE statement. Before we can explore more about the how a numeric variable is defined, we first need to understand some PROC REPORT basics. Then we will explore the many ways a numeric variable 1 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued can be defined in the DEFINE statement and how that definition determines the manner in which the variable is referenced in a COMPUTE bl ock.In the PROC REPORT statement, the input data set is listed using the option DATA= . If the DATA= option is not specified, PROC REPORT will use the last data set that was created in the current SAS session. The input data set contains variables and observations. The variables are categorized as either character or numeric— that is it, character or numeric. PROC REPORT does not use all of the variables from the input data set. Only the input data set variables that are listed in the COLUMN statement or in the BY statement are used.All of the report items, including the variables from the input data set that are listed in the COLUMN statement can be used in a COMPUTE block. Each report item in the COLUMN statement has an associated DEFINE statement. If a DEFINE statement for the report item is not supplied, PROC REPORT will create a default DEFINE statement behind the scenes. If a COLUMN statement is not specified, PROC REPORT will create a COLUMN statement behind the scenes . The COLUMN statement will contain only the variables from the input data set in the order of the data set.DEFINE statements can be supplied without a supplied COLUMN statement. The minimum statements that are needed to run PROC REPORT are a PROC REPORT statement with an input data set and a RUN statement. Behind the scenes, PROC REPORT will create all the necessary minimum default statements. To see the default statements, add the LIST option in the PROC REPORT statement. The LIST option will produce the basic code, including all of the DEFINE statements, in the SAS log. The NOWD option enables the report to run in the non-windowing mode.Here is an example of PROC REPORT code with the LIST option: proc report data=sashelp. class nowd list; run; The SAS log is shown in Output 1. Output 1. SAS Log Output By default, the DEFINE statement for a numeric input data set variable that is listed in the COLUMN statement will be associated with the SUM statistic. An alias for the SUM statist ic is ANALYSIS. The SUM statistic is the most common statistic that is used in PROC REPORT code. The SUM statistic can be replaced with any valid PROC REPORT statistic such as MIN or MEAN.At BREAK and RBREAK rows, the numeric input data set variable with an associated statistic will consolidate automatically based on the associated statistic. When a numeric input data set variable with an associated statistic is referenced in a COMPUTE block, the form of the variable-name. statistic is used. In a COMPUTE block, if a numeric input data set variable name is used without the corresponding statistic (which is the statistic listed in the DEFINE statement), a note might be written to the SAS log. The following code will produce a note in the SAS log: roc report nowd data=sashelp. class; col age height weight total; define age / group; define height–weight/ mean; define total / computed; compute total; total=height. mean/weight; endcomp; run; 2 PROC REPORT Unwrapped: Exploring the S ecrets behind One of the Most Popular Procedures in Base SAS ® Software, continued In the preceding code, the DEFINE statement for the WEIGHT variable lists MEAN as the statistic. The calculation in the COMPUTE TOTAL block for the TOTAL COMPUTED variable shows the WEIGHT variable without the statistic of MEAN.PROC REPORT requires this statistic and does not recognize the WEIGHT variable. A note, such as the following, is produced in the SAS log: NOTE: Variable weight is uninitialized. PROC REPORT allows duplication of report items in the COLUMN statement. This duplicated report item becomes an alias. When an alias of the numeric input data set variable is referenced in a COMPUTE block, the alias name is used without the associated statistic. Behind the scenes, any duplication of the same variable or statistic in the COLUMN statement will be associated with an alias name.If an alias name is not specified, PROC REPORT will create one. To see the assigned alias name, add the LIST opt ion to the PROC REPORT statement and review the SAS log for the code. Using the preceding code in this section, the HEIGHT variable is duplicated in the COLUMN statement as follows: col age height height weight total; The resulting SAS log is shown in Output 2. Output 2. SAS Log Output Showing an Alias Name of _A1 Assigned behind the Scenes When the numeric input data set variable with an associated statistic is associated with an across variable, the column number, in the form of Cn_, is used in a COMPUTE block. In the form of _Cn_, n is the column number. The position of the columns shown in the output report is based on the left-to-right placement of the report-items in the COLUMN statement. For example, if a numeric variable with an associated statistic is placed as the first column under the ACROSS grouping but it is the second column in the output report, _C2_ is the correct value to use in a COMPUTE block. Behind the scenes, all columns are considered to have a column number even if the column is not printed in the final output report.Here is an example COLUMN statement: col sex age, (weight height); In this column statement, the first value of the WEIGHT variable is in the second column in the report. AGE is an across variable and is not counted as a column. The first column of the WEIGHT variable is associated with the first value of AGE and is referenced in a COMPUTE block as _C2_. The next column of the WEIGHT variable that is associated with the second value of AGE is referenced in a COMPUTE block as _C4_. Each unique value of the across variable becomes a header.Under each ACROSS header are the columns of variables that are associated with each unique across variable value. Each variable associated with an across variable becomes a column under the unique variable value. The number of unique values of an across variable controls the number of columns that are created for a variable associated with the across variable from the COLUMN statement. Beh ind the scenes, PROC REPORT has to know the specific column placement of a variable that is referenced in a COMPUTE block. The _Cn_ is used instead of the variable-name. statistic, the alias name, or the variable name. PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued The following example code shows this concept: proc report nowd data=sashelp. class list; col age sex, (weight height total); define age / group; define sex / across; define height–weight/ sum format=8. 2; define total / computed format=8. 2; compute total; _c4_=_c2_/_c3_; _c7_=_c5_/_c6_; endcomp; run; The COMPUTE TOTAL block shows two assignment statements. Each assignment corresponds to a column of WEIGHT, HEIGHT, and TOTAL for each unique value of the across variable SEX.The resulting output is shown in Output 3. Output 3. Output Using _Cn_ in the COMPUTE TOTAL Calculations A numeric input data set variable can also be defined as DISPLAY , GROUP, ORDER, or COMPUTED. Because there is no statistic associated with these definitions, the numeric input data set variable name is used in a COMPUTE block. Regardless of the definition, the numeric report-item can still be used in any computation. However, for GROUP or ORDER definitions, behind the scenes the values are evaluated from the printed output report instead of the input data.This means that if the ORDER or GROUP defined variable for a particular row and column shows as a blank on the printed output report, a blank is the value that will be used for any computation or evaluation. The following code shows three different methods for assigning the value of the ORDER variable AGE to a COMPUTED variable. proc report nowd data=sashelp. class; col age newage1 newage2 newage3; define age / order; define newage1 / computed; define newage2 / computed; define newage3 / computed; /* method 1 */ compute newage1; newage1=age*1. 5; endcomp; /* method 2 */ ompute newage2; if age n e . then hold_age=age; newage2=hold_age*1. 5; endcomp; /* method 3 */ compute before age; before_age=age; endcomp; compute newage3; newage3=before_age*1. 5; endcomp; run; 4 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued In the first method, the value for NEWAGE1 will contain a value only when AGE has a value for the same row. In the second method, the value of NEWAGE2 will contain a value for every row because it is obtaining a value from the DATA step variable HOLD_AGE.In the third method, the value of NEWAGE3 will contain a value for every row because it is obtaining a value from the DATA step variable BEFORE_AGE. The DATA step variable is created in the COMPUTE BEFORE AGE block. Behind the scenes, a DATA step variable changes values only through the code instructions. Also, behind the scenes, GROUP and ORDER numeric input data set variables are internally set to a blank in the printed output report at the RBREAK level. A COMPUTE AFTER block with an assignment statement for a numeric GROUP or ORDER variable at the RBREAK level will be ignored.A DISPLAY is always set to a blank at the BREAK and RBREAK levels. If you are routing the report output to an ODS destination, using a COMPUTE block CALL DEFINE statement with the STYLE attribute name and a style option that will accept text, such as PRETEXT=, is a way to override the blank values. A COLUMN STATEMENT VARIABLE VERSUS A DATA STEP VARIABLE PROC REPORT creates a column type of output report based on the variables and statistics listed in the COLUMN statement. Any variable from the input data set that is to be used as a report column or used in a COMPUTE block has to be listed in the COLUMN statement.The placement of the report items, variables, and statistics in the COLUMN statement is very important. PROC REPORT reads and processes the report items from the COLUMN statement in a left-to-right, top-to-bottom direction. Until the rep ort item is processed, it will be initialized to missing for numeric variables and blank for character variables. Once the entire COLUMN statement report-items are processed for a row, PROC REPORT reinitializes all of the report-items back to missing for numeric and blank for character variables.Then PROC REPORT begins the process all over again for the next row of data by processing the report items in the COLUMN statement in a left-to-right direction. Behind the scenes, PROC REPORT consolidates all the input data set variables and statistics listed in the COLUMN statements for the execution of RBREAK BEFORE and BREAK BEFORE statements. For example, the RBREAK, meaning the report break, in the following code is calculated first: proc report nowd data=sashelp. class; col sex age,(height weight); define age / group; define height / min format=8. 2 ‘Height min'; efine weight / max format=8. 2 ‘Weight max'; rbreak before / summarize; run; The output is shown in Output 4. Ou tput 4. PROC REPORT Output Showing the RBREAK Values COMPUTE blocks are also sensitive to the placement of the variables and statistics in the COLUMN statement. As PROC REPORT processes the report-items in a left-to-right direction, any associated COMPUTE blocks are also processed in the same order. This means that in a COMPUTE block that is based on a COLUMN statement reportitem, any referenced variable or statistic to the right of the COMPUTE block variable is missing.Simply put, PROC REPORT does not know about any report-item that is to the right of the COMPUTE block variable in the COLUMN statement. A DATA step variable, also referred to as a temporary variable, is different from the COLUMN statement variable. A DATA step variable is created and used in a COMPUTE block. It is not part of the COLUMN statement. The value of the DATA step variable comes directly from the code in a COMPUTE block. DATA step variables are often used in IF statements when there is a comparison of the c urrent row value to that of the value in the DATA step variable.PROC REPORT recomputes a COMPUTED variable value at every row, including at the BREAK and RBREAK rows. Values are not accumulated. An accumulated value can be calculated quickly using a DATA step variable in a 5 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued COMPUTE block because the value changes through the code only. Behind the scenes, DATA step variables used to accumulate values also include values at the BREAK and RBREAK levels. Adding an IF statement to check the value of the _BREAK_ automatic variable will help control when the accumulations takes place.In the following code, the computed variable TOTAL_AGE is the sum of two variables from the COLUMN statement. ACCUM_AGE is the accumulated value of AGE stored in the DATA step variable TEMP_AGE. proc report nowd data=sashelp. class; col age total_age accum_age height weight; define age / group; define height / min format=8. 2 ‘Height min'; define weight / max format=8. 2 ‘Weight max'; define total_age / computed; define accum_age / computed; compute total_age; if _break_ eq ‘ ‘ then total_age+age; endcomp; compute accum_age; if _break_ eq ‘ ‘ then temp_age+age; accum_age=temp_age; endcomp; break after / summarize; run; The output is shown in Output 5. Output 5. Comparison of the TOTAL_AGE Column and the ACCUM_AGE Column Notice the difference between the TOTAL_AGE column and the ACCUM_AGE column in Output 5. The TOTAL_AGE and AGE values are reinitialized for every row so that the values are not accumulated. The ACCUM_AGE and AGE values are reinitialized for every row but the TEMP_AGE value is not. TEMP_AGE is a DATA step variable and is not listed in the COLUMN statement. The result is an accumulated column for ACCUM_AGE. The _BREAK_ automatic variable will be blank for detail rows.A quick way to determine the value of a _BREAK_ va riable value is to create an output data set with the OUT= option in the PROC REPORT statement and examine the _BREAK_ values in the output data set. DISCOVERING WAYS TO MOVE COLUMN HEADERS By default, the column heading values come from the label in the DEFINE statement. If you do not specifically specify a label in your code either in the DEFINE statement or through a LABEL statement, add the LIST option to the PROC REPORT statement, submit your code, and look at the code that is created in the SAS log.Behind the scenes, PROC REPORT will generate the default values it needs to create the output report. One of the default values is the label specified in the DEFINE statement. All of the column headings from the label option in the DEFINE statement span over a single column with one exception, variables that are defined as across variables. A column heading for an across variable can span over multiple columns. In the COLUMN statement, a comma after the across variable indicates whi ch variable or group of variables are associated with the across variable.An example of PROC REPORT code containing an across variable is shown below: 6 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued title ‘Default Column Headers'; proc report nowd data=sashelp. shoes; column Region Product,Sales; define Region / group format= $25. â€Å"Region†; define Product / across format= $14. â€Å"Product†; define Sales / sum format= DOLLAR12. â€Å"Total Sales†; run; Output 6 shows the PROC REPORT example output. Output 6.Default Column Heading with an Across Label Spanning over Multiple Columns Behind the scenes, each unique value of an across variable is transposed from a column to a row. The row data is not available for any further processing within the code as it now becomes a column heading. In Output 6, each value of Product becomes a column with the Product value as the column head ing. Under each Product column heading value is the Sales variable column heading and data for the particular Product value. The heading label Total Sales for every column is redundant.The output report would look better if Total Sales were removed from under the Product column heading and placed above the Product column headings. PROC REPORT provides a way to add column heading information that can span over multiple columns by using a SPANNED HEADER. The SPANNED HEADER is used in the COLUMN statement in this way: column (‘spanned header text' variable-list)†¦; The following example code shows three different methods for using the DEFINE statement and SPANNED HEADERS for creating the column heading: proc report nowd data=sashelp. shoes split='*'; olumn region (‘(1)Total Sales' ‘(1)Product' ‘(2)Total Sales*(2)Product' product, sales); define region / group format= $25. â€Å"Region†; define product / across format= $14. â€Å"(3)Total Sales† â€Å"(3)Product† ; define sales / sum format=DOLLAR12. † † ; run; You can mix and match the methods. There is no best practice for using each method. The method that you choose depends on the look that you want for the column heading. The output is shown in Output 7. 7 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued Output 7. Moved Column Headings from Different MethodsThe three different methods are numbered in the example code and the output shown in Output 7: method (1) uses multiple SPANNED HEADER text; method (2) uses SPANNED HEADER text with the PROC REPORT SPLIT= character of * to force the text to continue on the next row; method (3) uses multiple labels in the DEFINE statement (you can also use a split character here). Let’s choose method (1) for the column heading and move the column heading to the top row. You can remove the label from the DEFINE statement by replacing the Region text with a blank â€Å" â€Å" and moving the Region text to a SPANNED HEADER in the COLUMN statement.There are three rows of headers. This means that the text of Region will need to be pushed up to the top row. You can do this by adding blank SPANNED HEADER text after the Region text in the COLUMN statement. Here is the modified PROC REPORT code with method (1) and the column heading text of Region: proc report nowd data=sashelp. shoes split='*'; column (‘Region' ‘ ‘ ‘ ‘ ‘ ‘ Region) (‘Total Sales' ‘Product' Product , Sales); define Region / group format= $25. † † ; define Product / across format= $14. † † ; define Sales / sum format=DOLLAR12. † † ; run; Output 8 shows the output. Output 8.Moving Column Headings Using Blank SPANNED HEADERS Behind the scenes, when there is a blank header row and the output is routed to an ODS destination, the blank row is removed automatically. Thi s does not affect the LISTING output. If you want to preserve the blank row, change the blank label on one of the DEFINE statements that is not an across variable to some value. Then add a style 8 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued statement for the header, assigning the foreground color to the background color.For example, if your column heading background is purple, then the style statement for the DEFINE statement would look something like this: style(header)=[background=purple foreground=purple] With the background and the foreground assigned to the same color, any text in the label will blend into the background color. CHANGING DEFAULT ATTRIBUTES WITH STYLES Beginning with SAS 9. 3, the default output destination is HTML. Behind the scenes, PROC REPORT is using the HTMLBLUE style. All the output in this paper all uses this default destination. What if you are not fond of the HTMLBLUE style?T hen, what do you do if you want to change the default style of your output report? If you want to change the style of HTMLBLUE to another style that is supplied in the Sashelp. Tmplmst template store, you can run the following code to create a list of all the styles that are available: proc template; list styles; run; You can apply the styles by adding an ODS statement with the specified style before the PROC REPORT statement. For example, if you want to use the FESTIVAL style instead of the default HTMLBLUE style, the ODS statement would look similar to this: ods html style=festival;PROC REPORT also provides the ability to change the styles of the different report locations. Here are the style location values and a description for each that indicates which part of the report is affected: ? ? ? ? ? ? REPORT—the report as a whole HEADER|HDR—the column headings COLUMN—the column cells LINES—the lines generated by LINE statements SUMMARY—the summary r ows created from BREAK and RBREAK statements CALLDEF—the cells identified by a CALL DEFINE statement All of the style locations are valid in the PROC REPORT statement. These styles apply to the entire location that is specified.The style locations can also be combined if the same attribute is being applied to multiple locations. This is the correct syntax: style= The following code shows how to apply the styles in the PROC REPORT statement: ods html style=festival; title ‘Styles on the PROC REPORT statement'; proc report nowd data=sashelp. class(obs=5) split='*' style(report)=[outputwidth=7in] style(column)=[background=lavender] style(header)=[foreground=green] style(summary)=[background=purple foreground=white] style(lines)=[background=lime] style(calldef)=[background=yellow foreground=black]; olumn name age sex weight height; define name / display; define age / order; define sex / display; define height–weight / sum; break after age / summarize; rbreak after / summarize; compute before; line ‘this is the beginning'; endcomp; 9 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued compute age; if _break_ ne ‘ ‘ then call define(‘age','style','style=[pretext=†total†]'); endcomp; run; The STYLE options in the preceding PROC REPORT statement are formatting the output in this way: ? ? ? style(report) sets the report output width to 7 inches. style(column) sets the background for all of the columns to lavender. style(header) applies a green foreground to all of the headers. style(summary) sets all of the summary rows created from BREAK and RBREAK statements with a ? ? style(lines) sets the line statements to a background of lime. style(calldef) sets the foreground to black and background to yellow for the CALL DEFINE locations. background of purple and a foreground of white. The resulting report output is shown in Output 9.Output 9. Changing Default Styles in the PROC REPORT Statement The DEFINE statement supports two types of styles: STYLE(COLUMN) and STYLE(HEADER). STYLE(COLUMN) applies to the entire column but will not override any styles that are applied to other locations in the column. Using the same code in this section, you can modify the DEFINE statement for the NAME variable that creates the Name column like this: define name / display style(column header)=[background=plum]; The background of the HEADER and COLUMN locations for the NAME variable is set to plum.Because styles were applied already to the SUMMARY location, only the header and detail cells for the NAME column are changed to plum. A CALL DEFINE statement is used to override the SUMMARY style for the NAME column. The CALL DEFINE statement is discussed more in the next section. Output 10 is the resulting report output. Output 10. Changing the Default Styles for the NAME Column Using a DEFINE Statement 10 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued The BREAK and RBREAK statements support style changes for summary lines, customized lines, or both.A summary line is created from the BREAK or RBREAK statements. A customized line is created from a LINE statement within a COMPUTE BEFORE or a COMPUTE AFTER COMPUTE block. The is a break-variable that is defined as either GROUP or ORDER or the _PAGE_ location. A style on the BREAK and RBREAK statements will not override a cell style that is created by a CALL DEFINE statement or the STYLE(CALLDEF) option in the PROC REPORT statement. A CALL DEFINE statement will be used to make the style changes in this case. Using the same code in this section, you can modify the RBREAK statement like this: break after / summarize style=[background=pink foreground=black font_weight=bold]; The COMPUTE BEFORE or a COMPUTE AFTER supports a style option in the COMPUTE statement. A forward slash ‘/’ precedes the style option in the COMPUTE statement. The style option only applies to the LINE statement and will override any previous STYLE(LINES) requests. The style applies to all of the LINE statements within the COMPUTE block. Using the code from this section, a COMPUTE AFTER AGE block is added to show a style modification to the foreground of the LINE statement output. ompute after age/ style=[foreground=red]; line ‘ this is after age'; endcomp; A CALL DEFINE is a statement within a COMPUTE block. To change a style using a CALL DEFINE statement, the STYLE attribute is specified for the attribute-name and the style option is specified as the value. The following is the syntax for a CALL DEFINE statement: call define (column-id | _ROW_ , ‘attribute-name', value); Here is the code with all of the style modifications: ods html style=festival; title ‘Changing Default Attributes with Styles'; proc report nowd data=sashelp. lass(obs=5) split='*' style(report)=[outputwidth=7in] style( column)=[background=lavender] style(header)=[foreground=green] style(summary)=[background=purple foreground=white] style(lines)=[background=lime] style(calldef)=[background=yellow foreground=black]; column name age sex weight height; define name / display style(column header)=[background=plum]; define age / order; define sex / display; define height–weight / sum; break after age / summarize; rbreak after / summarize style=[background=pink foreground=black font_weight=bold]; ompute before; line ‘this is the beginning'; endcomp; compute age; if _break_ ne ‘ ‘ then call define(‘age','style','style=[pretext=†total†]'); endcomp; compute after age/ style=[foreground=red]; line ‘ this is after age'; endcomp; run; The updated output is shown in Output 11. 11 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued Output 11. Final Report Output with Changes to Default Attribute s Using Style Options You also can change styles by using inline formatting.Inline formatting is a feature of the Output Delivery System that enables you to insert simple formatting text into ODS output by using the ODS ESCAPECHAR statement. For example, here is a TITLE statement and the resulting output: title ‘This is ^{style [color=red font_weight=bold] RED}'; This is RED The inline formatting in the TITLE statement changes the text of RED to the color of red. The caret (^) in the TITLE statement is the declared ODS ESCAPECHAR. The ODS ESCAPECHAR statement has to be submitted before any inline formatting will take place.The caret (^) can be any unique character that would not normally be in your code. USING THE CALL DEFINE STATEMENT The previous section discussed using the CALL DEFINE statement as a way to change a style by specifying the STYLE attribute for the attribute-name and the STYLE= option for the value. As mentioned earlier, this is the syntax for the CALL DEFINE statement: call define (column-id | _ROW_ , ‘attribute-name', value); The column-id is the column name or the column number. The column-id can be specified as one of the following: ? ? ? ? ? ? a character literal (in quotation marks) that is the column name a character xpression that resolves to the column name a numeric literal that is the column number a numeric expression that resolves to the column number a name of the form _Cn_, where n is the column number the automatic variable _COL_, which identifies the column that contains the report-item to which the compute block is attached _ROW_ is an automatic variable that indicates that the value is to be applied to the entire row. Currently, the _ROW_ variable is applicable only with the STYLE attribute name. Behind the scenes, all of the COLUMN statement report-items are used to create the report.The columns created from the COLUMN statement report-items are placed in the same order, left to right. Each created column has a column number, beginning with ‘1’ for the left-most column on the report. All report-items have a column number, even if there are NOZERO, NOPRINT, and COMPLETECOLS options specified, because these options are applied after the report is created in memory. The following code shows the column number: 12 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued data test; nput type $ color $ counter; cards; aaa purple 1 aaa orange 1 bbb purple 2 ccc orange 2 ; run; proc report nowd data=test missing ; col counter type,color,counter=num; define counter / group ‘ ‘; define type / across ‘ ‘; define color / across ‘ ‘; define num / sum ‘ ‘ nozero; compute num; call define(4,'style','style=[background=purple]'); endcomp; run; Output 12 shows the output. Output12. PROC REPORT Output with the Incorrect Column Number Used in a CALL DEFINE Statement In the code above, the CALL DEFINE statement applies a purple background to the fourth column.There is a NOZERO option in the DEFINE statement for NUM, which instructs the report to not print that column if all the column values are zero or missing. By adding the SHOWALL option to the PROC REPORT statement and resubmitting the code, the resulting output in Output 13 shows the fourth column with a purple background. The SHOWALL option displays all of the NOPRINT option and NOZERO option columns in the output report. This option, with the LIST option, is good to use when debugging PROC REPORT code. proc report nowd data=test missing showall; Output 13.Resulting Output When the SHOWALL Option Is Applied to the PROC REPORT Statement If the intention is to change the background of the fourth column that is shown in Output 13, then here is the correct CALL DEFINE statement: call define(5,'style','style=[background=purple]'); There is no limit to the number of CALL DEFINE statements that can be used in a COM PUTE block. If there are duplicate styles that need to be applied to different cells, you might want to consider consolidating the CALL DEFINE statements. Behind the scenes, PROC REPORT calls on the SAS DATA step compiler when a COMPUTE block is used.Most of the SAS DATA step code functionally is available to you when you create code for a COMPUTE block. One consolidation technique is to use a DO loop with a CALL DEFINE to loop through the column number to apply a style. Using the code in this section, here is a modification to the COMPUTE NUM block: 13 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued compute num; call define(_row_,'style','style=[background=wheat]'); do purple_column= 3 to 5 by 2; call define(purple_column,'style','style=[background=purple foreground=white font_weight=bold]'); end; ndcomp; The output is shown in Output 14. Output 14. Output Using Modified Code from the COMPUTE NUM Block We ha ve seen examples of using the attribute name of STYLE. There are other attribute names that can be used. For example, if you want to make the contents of each cell a link to a specified Uniform Resource Locator (URL), you can use the URL attribute as the attribute-name and the link as the value. Before ODS, and yes, there was a time before ODS, there was the Output Window (known now as the LISTING destination). The only attribute that is specified in a CALL DEFINE statement for use in the Output Window is the  ®FORMAT attribute. Once ODS was introduced in SAS 7, the ability to use the FORMAT attribute included all output destinations. _ROW_ cannot be used when the FORMAT attribute name is specified in the CALL DEFINE statement. The best use of the FORMAT attribute can be illustrated by using the output from a PROC MEANS using the default statistics. The following PROC MEANS code creates an output data set and a PROC PRINT to print the output: proc means data=sashelp. class nway; w here age=15; class age; var weight height; output out=means_output; run; proc print; run; The output is shown in Output 15.Output 15. PROC PRINT Output In looking at the output in Output 15, it really does not make sense for the N statistic for the WEIGHT and HEIGHT variables to have decimals. PROC REPORT allows an easy way to change the format for these two cells by using the CALL DEFINE statement within a COMPUTE block. The following PROC REPORT shows the CALL DEFINE with the FORMAT attribute. 14 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued proc report nowd data=means_output; col age _stat_ weight height; define age / order; efine _stat_ / display; define weight / sum format=8. 2; define height / sum format=8. 2; compute height; if _stat_='N' then do; call define(‘Weight. sum','format','8. ‘); call define(‘Height. sum','format','8. ‘); end; endcomp; run; The results are shown in O utput 16. Output 16. PROC REPORT Output with a Cell Format Change The first row under the headers in Output 16 shows the N statistic for both the WEIGHT and HEIGHT columns without decimals. Any time there is a need to change the format of a cell within a column, the CALL DEFINE with the FORMAT attribute is the best method to use.The other choice would be to create a computed character variable version of the value with the desired format. But what fun would that be? EXPLORING MULTILABEL FORMATTING TO CREATE SUBGROUP COMBINATIONS You might be asking yourself, what is multilabel formatting? Admittedly, the concept of multilabel formatting baffled me at first. I knew other procedures such as PROC TABULATE and PROC MEANS worked with multilabel formatting, and therefore could not envision it with PROC REPORT. Multilabel formatting enables PROC REPORT to use a format label or labels for a given range or overlapping ranges to create a combination of subgroups.The multilabel formats are app lied to either group or across variables. It was not until I had a scenario where I needed to create a report with various subgroupings that I began to appreciate using multilabel formatting. Unfortunately, because multilabel formatting was not available for PROC REPORT in the version of SAS that I was using, my only choice was to slice and dice the data prior to the PROC REPORT step. Multilabel formatting is new for PROC REPORT in SAS 9. 3. The multilabel format is created with PROC FORMAT. The option of multilabel within parentheses is applied to the VALUE statement after the format name.A syntax error, such as the following, will occur in the SAS log if the multilabel option is added without the parentheses: ERROR 22-322: Syntax error, expecting one of the following: a quoted string, a numeric constant, a datetime constant, a missing value, ;, (, LOW, OTHER. ERROR 202-322: The option or parameter is not recognized and will be ignored. If there are overlapping ranges on the labels of the VALUE statement, error messages such as the following will be created in the SAS log for each overlapping range: ERROR: These two ranges overlap: LOW-16 and 11-13 (fuzz=1E-12).ERROR: These two ranges overlap: 11-14 and 11-15 (fuzz=1E-12). In the following example PROC FORMAT code, the multilabel option within parentheses is listed after the format name of AGEFMT in the VALUE statement: 15 PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued proc format; value agefmt (multilabel) 11-13 =' 11 to 13†² 11-14 =' 11 to 14†² 11-15 =' 11 to 15†² 11-high ='11 and above' low-16 ='16 and below' ; run; You might have noticed that some of the labels contain leading blanks.Behind the scenes, PROC REPORT applies the format before creating groups and the formatted values are used for ordering. Without the leading spaces, the category of ‘11 and above’ will be the first group printed because an ‘a’ in ‘and’ precedes a ‘t’ in ‘to’ for an ascending ordering schema. Adding leading spaces is a way to ensure the desired grouping order. In the example PROC REPORT code below, AGEFMT format is added to the DEFINE AGE statement. Notice that there is also the option of MLF. The MLF option is required when multilabel formatting is desired. itle â€Å"Multilabel Formatting†; proc report data=sashelp. class nowd; col sex age (‘Mean' height weight); define sex / group; define age / group mlf format=agefmt. ‘Age Groups'; define height / mean format=6. 2 ‘Height (in. )'; define weight / mean format=6. 2 ‘Weight (lbs. )'; rbreak after / summarize; run; The output is shown below in Output 17. Output 17. Multilabel Formatting HTML Output The multilabel formatting is applied only to a group or across variable. If you try to apply the MLF option to any other definition, a warning message will be produced.For exa mple, if the group variable is changed to an order variable for the DEFINE AGE statement, the SAS log will show the following warning: WARNING: The MLF option is valid only with GROUP and ACROSS variables. MLF will have no effect for the variable age. If you need to create a detailed report instead of a summary report, you can change any other group variable to an order variable or add an order variable. For example, using the code in this section, if the DEFINE SEX/GROUP is changed to DEFINE SEX/ORDER, a detailed report showing a row for every observation from the input data set will be produced. 16PROC REPORT Unwrapped: Exploring the Secrets behind One of the Most Popular Procedures in Base SAS ® Software, continued DID YOU KNOW†¦ Now that you know the behind-the-scenes secrets of PROC REPORT, here are some other little-known facts of interest. Did you know that PROC REPORT started out as an interactive windowing product and the interactive window is the default environment ? Are you not sure what an interactive window is? Most of us have accidentally invoked PROC REPORT code without the NOWD, NOWINDOWS, or the NOFS option and end up in an unfamiliar window. This unfamiliar window is actually the REPORT window.Here is sample PROC REPORT code that invokes the REPORT window: proc report data=sashelp. class; run; The REPORT window is shown in Display 1. Display 1. The REPORT Window Showing PROC REPORT Code In fact, the REPORT window can be found in different places of SAS. For example, the Report Editor under the Tools menu and the Design Report selection under Reporting in the Solutions menu item both invoke the REPORT window. Entering TREPORT in the command line box will also invoke the REPORT WINDOW. For anyone new to PROC REPORT, using the report in the window mode is a wonderful way to quickly create an immediate report.The code can be found in the Report Statements selection located in the Tools menu from the REPORT window. For experienced PROC REPO RT coders, using the REPORT window to create the code saves time typing. Make sure that the NOWD option is added to the PROC REPORT statement when you are running in an editor. As new options are added to PROC REPORT, most of them will also work in the windowing mode. The exception is with ODS. The windowing mode of PROC REPORT does not support any of the ODS functionality. So check it out!  ®  ® Also, did you know that for SAS Enterprise Guide users, there is a wizard that uses PROC REPORT behind the scenes?It is called the List Report wizard. You can invoke the List Report window through the Describe selection under the Tasks menu item. The List Report wizard was designed for the user who has little to no SAS or PROC REPORT experience. Only the underlying code reveals that PROC REPORT was used behind the scenes. Display 2 shows the SAS Enterprise Guide List Report wizard. Display 2. The SAS Enterprise Guide List Report Wizard 17 PROC REPORT Unwrapped: Exploring the Secrets beh ind One of the Most Popular Procedures in Base SAS ® Software, continued CONCLUSIONSo there you have it. We have discovered the secrets behind how PROC REPORT is made by exploring a numeric variable in a COMPUTE block, the difference between an input data set variable and a DATA step variable, and ways to move column headings, change attributes with styles, use the CALL DEFINE statement, and explore the multilabel formatting. We dug deep into example code and even unwrapped some of the little known facts about PROC REPORT. That is all the time we have and thank you for taking part in PROC REPORT Unwrapped! RECOMMENDED READING Booth, Allison McMahill. 2011. Beyond the Basics: Advanced PROC REPORT Tips and Tricks Updated for SAS ® 9. 2. † Proceedings of the SAS Global Forum 2012 Conference. Cary, NC: SAS Institute Inc. Available at support. sas. com/resources/papers/proceedings11/246-2011. pdf. Booth, Allison McMahill. 2010. â€Å"Evolve from a Carpenter’s Apprentice to a Master Woodworker: Creating a Plan for Your Reports and Avoiding Common Pitfalls in REPORT Procedure Coding. † Proceedings of the SAS Global Forum 2010 Conference. Cary, NC: SAS Institute Inc. Available at support. sas. com/resources/papers/proceedings10/1332010. pdf.Booth, Allison McMahill. 2007. â€Å"Beyond the Basics: Advanced PROC REPORT Tips and Tricks. † Proceedings of the SAS Global Forum 2007 Conference. Cary, NC: SAS Institute Inc. Available at support. sas. com/rnd/papers/sgf07/sgf2007-report. pdf. SAS Institute Inc. 2012. â€Å"Find Your Answer in the SAS Knowledge Base. † SAS Customer Support Web Site. Available at support. sas. com/resources/.  ® SAS Institute Inc. 2012. â€Å"REPORT Procedure. † Base SAS 9. 3 Procedures Guide. Cary, NC: SAS Institute Inc. Available at support. sas. com/documentation/cdl/en/proc/63079/HTML/default/viewer. tm#p0bqogcics9o4xn17yvt2qjbgdpi. htm. SAS Institute Inc. 2012. â€Å"REPORT Procedure Windows. à ¢â‚¬  Base SAS ® 9. 3 Procedures Guide. Cary, NC: SAS Institute Inc. Available at support. sas. com/documentation/cdl/en/proc/63079/HTML/default/viewer. htm#p10d8v5dnafqb9n1p35e7kp9q67e. htm. SAS Institute Inc. 2008. â€Å"The REPORT Procedure: Getting Started with the Basics. † Technical Paper. Cary, NC: SAS Institute Inc. Available at support. sas. com/resources/papers/ProcReportBasics. pdf. SAS Institute Inc. 2008. â€Å"Using Style Elements in the REPORT and TABULATE Procedures. † Technical Paper.Cary, NC: SAS Institute Inc. Available at support. sas. com/resources/papers/stylesinprocs. pdf. CONTACT INFORMATION Your comments and questions are valued and encouraged. Contact the author at: Allison McMahill Booth SAS Institute Inc. SAS Campus Drive Cary, NC 27513 E-mail: [email  protected] com Web: support. sas. com 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 coun tries.  ® indicates USA registration. Other brand and product names are trademarks of their respective companies. 18

Friday, August 30, 2019

Economic impact of Tourism: Pacific Rim Essay

Introduction The Pacific Rim is a grouping of countries in the Pacific Ocean1 that start from the Korean peninsula down through south East Asia. Some of the common countries in this region are; Thailand, Hong Kong, Indonesia, Vietnam, Cambodia, Singapore, Malaysia, Brunei. The current economic situation has been gleam with poor performance from the main economic activity agriculture. To alleviate the situation we must look at tourism as a way of sustaining recommended economic growth. The Pacific Rim has a rich relationship with the tourism industry, with people all over the world highlighting the regions population for good hospitality. Countries like Indonesia and Thailand have used tourism to assist build formidable economies. Tourism within this region is mainly based on leisure along its warm beaches and historical and cultural tours. The average number of tourist in this region per country is relatively high ranging from 5 million in larger destinations like Indonesia to 1 million in Vietnam. Seasonality in the region has its Peak seasons set from July to Oct and Dec 15th to Jan 15th and low season from October to April. Economic Impacts of tourism Foreign exchange earnings International tourist coming to the area will bring in much needed foreign exchange into the local economy. The small pacific island of Samoa gained S $148. 7 million in foreign exchange through tourism in 2001 up S$ 109. 9 million $ the previous year according to their central bank2. The local government and tourist bodies should enforce that international tourists pay in U. S dollars or other stable world leading currency that can be used in stabilising the countries balance of payment. To maximise foreign exchange earnings efficiency, countries where imports are attained from should be targeted for tourism promotion, so as to allow influx of there currency. E. g. if most of the mechanical imports come from Switzerland the government usually has to source Swiss Francs. This can be done by targeting Swiss tourists. Rise in Gross National Product Tourism is an economic activity that provides to the GNP and per capita income of a country. In countries with rich tourist history it could provide up to 25% of the local economy. In 1994 Korea3 for instance set up a successful 5 year plan that help them achieve a U. S $ 500 million income from tourism this target was shifted to US $ 10 Billion for the year 2000. (ref) Increased revenue for the government Government income rises in form of taxes; this could range from a multiple of options; Visa fees; this is fee issued to passport holders of all or select countries to gain entrance into the country. This can income can be sort after at the entry port i. e. airports, harbour docks or International rail stations or at the Countries embassy/Consulate/ High commission in the country of tourist origin. The visa fees are usually categorised by the duration of stay, the frequency of return trips and reason for entry. 4 Value added tax: This is tax on all good, commodities and services acquired. This does not differ from local citizen to international tourist. Training levy: This is a tax that is common in developing countries, that is attached to the direct development of tourism. It is usually enforced by all registered hospitality organisation, at a nominal rate of approximately 2% this money is used to support hospitality schools country wide which ensure to the sustainability of quality service in the destination. Eco-tax: a fairly new concept that put a surcharge on all tourists going to an area, this income is used by the central or local government to support environmental conservation efforts in the area. It is commonly referred to as Balearic tax5 in European countries. It is important that the tax rate or amount collected off set the actual cost incurred in hosting the tourists. A generator of employment Opening up an area to tourism brings in new employment opportunities directly in the tourism and hospitality sector as well as feeder and supply industries. If the area is prospering thanks to tourism then all other sectors are likely to also get into an economic up swing, thus also providing more employment. Improvement of social services The tourism industry is a sector that depends on good infrastructure. The local area will profit from improved services like; Transport: Rail, Air, Water Health services: Hospitals and clinics Water and power supply: Clean sanitary water to international tourists standards, Good steady power supply, with an expanded network Communication; Repair and introduction of new communication mediums. This are initially introduced to serve the tourism industry but eventually trickled down to the local community. Tourism development may lead to an introduction of a wider array of goods and services that may be of a higher quality. This new economic sector could see the introduction of imported goods that will both improve household and commercial goods and services. Encourage business atmosphere The local business community will gain by getting the opportunity to invest in the new opportunities in tourism. Feeder business opportunities created, alternative trade that can flourish A prosperous community with improved social services creates an air of good business environment that will help improve the creativity and diversity of ideas. Economy opportunities created due to awareness (of the rest of the world) contact (by locals with foreign visitors) that tourism brings about. Tourist can turn into investors. Investors can come looking for opportunities once the region is opened up Offer alternative or/and assist traditional industries Ease over reliance on a traditional economic activity e. g. Agriculture, plus may also promote it. The hospitality industry has a large emphasis on culinary experience, thus there it also creates a high demand for agricultural products. By encouraging tourism one would also be encouraging the agricultural sector. This is in the condition that the farm produce can be utilised in the hospitality and that the tourism industry promotes local produce as opposed to importing. Promote time after harvest season when agriculture is at low season. One easy way of promoting the agricultural industry without clashing with tourism is by establishing agro-tourism. Agro tourism is tourism in which tourist’s board at farms or in rural villages and experience farming at close hand. This is a good way of using the agricultural layout to make additional income. New group of economically stable professionals in that are to stimulate growth As the tourism industry grows there will be the generation of financially advantaged locals and expatriate6 community that will create a new market segment that are economically powerful. Political Stability[WKK1] World’s economies are closely tied to political situations. If the new tourism developments are well initiated and the majority of country cross-section are prospering from it in one way or the other then the political situation is bound to be more stable. Prosperous citizens are less revolutionary. Conclusion and recommendations Payments to local companies, foreign exchange control. Local ownership. Top jobs should be open to locals. Tourism should not become the single most important economic activity. 1 Find a map of the region in the appendix 2 Refer to the Samoa information Website link 3 Information derived from: Marketing Korea as tourist destination by Gordon Waitt. University of Wollongong Australia. Tourism management Articles Vol. 17 No. 2. Pg 113-121 1996. 4 Refer to appendix of illustration of the different visa application fees as per the Indonesian government. 5 Tourism and environmental taxes. With special reference to â€Å"Balearic ecotax† by Teresa Palmer and Antoni Reira. University of Majorca Spain. Tourism management journal 24, 2003 6 Refer to XXXX academic journal for a indication of expatriate influx in the Pacific region. [WKK1]Good economy leads to political stability which comes back to an even better economy.

Thursday, August 29, 2019

Novel Coursework Example | Topics and Well Written Essays - 500 words

Novel - Coursework Example who compares human beings to androids and argues that they too can be controlled (4-11). Philip Dick also supports Shelley’s viewpoint noting that while androids may be capable of empathy, humans may be devoid of it (Dick 14). He believes that humans as individuals are not empathetic, but they can be when in a group. Octavia Butler perspective is different from the others’ because in her text, Doro who breeds people takes their humanity away (28-33). Therefore, the people bred lack humanity because their creator denies it to them. However, he seems to support the fact that human beings by nature are barbaric and self-centered. All the three texts show that human nature is difficult to understand and impossible to control. This manifests in the character of the society bred by Doro. In his comparison between humans and androids, Philip Dick also demonstrates the fact that androids can be controlled but humans cannot. This character in human beings also manifests in Frankenstein where the people are cruel towards Frankenstein apart from Victor, his creator, who at least showed some understanding to the monster. The most interesting book among the three is â€Å"Do Androids Dream of Electric Sheep in which the concept of androids is well understood by humans. Unlike in Frankenstein where people do not identify the kind of creature he is, no one is afraid of androids. They are seen as a humanoid race intended to challenge the supremacy of man. In this text, I learn that androids have existed for a longer time than monsters, something only a few people know. Androids have a more mature and established relationship with humans than monsters. For instance, unlike Frankenstein, who was one man’s work, androids were constructed by the entire society as â€Å"Synthetic Freedom Fighters’. Philip Dick’s â€Å"Do Androids Dream of Electric Sheep?† changed my way of thinking. Like most people, I believe that androids are meant

Wednesday, August 28, 2019

Assessment and treatment options for substance abuse and dependence Essay

Assessment and treatment options for substance abuse and dependence clients - Essay Example Alcohol and chemical abuse, for example, have been estimated to co-occur in one third of the psychiatric disturbances presented in therapy (Doweiko, 2006). Doweiko cautioned that mental health practitioners need to be cognizant of individuals presenting with concurrent diagnoses. Students do experience crises in their lives and the extent to which they seek counseling services will be determined by their knowledge of the existence and purpose of such services, their belief in the competence of such services, and their assurance of mutual confidentiality. Such efforts are possible only through extensive outreach and public relations activities and programs, and through counselors' reputation of being concerned, effective professionals. There appears to be less stigma attached to counseling now than has been the case in past decades. The shift from traditional to modern culture may be seen as one reason for this change (Axelson, 1993). Traditional culture (before the Industrial Revolution) emphasized personal direction through collaborative family bonds, whereas modern culture focuses on individual improvement minus family attachment.