/
Sugif   29.1.2014 Sugif   29.1.2014

Sugif 29.1.2014 - PowerPoint Presentation

shangmaxi
shangmaxi . @shangmaxi
Follow
342 views
Uploaded On 2020-08-26

Sugif 29.1.2014 - PPT Presentation

by Heikki Herva Proc FCMP Itse kirjoitetut funktiot Hash objekti Taulukkotietorakenne Yleismoduuli Yleisosa proc fcmp outlib ltcomufunctionskurssausltl subroutine ID: 802085

length format oyvol attrib format length attrib oyvol hash muutettu nimi valuutta paluukd pankki ltl commax17 informat kurssattu sqlkd

Share:

Link:

Embed:

Download Presentation from below link

Download The PPT/PDF document "Sugif 29.1.2014" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Sugif 29.1.2014 by Heikki Herva

Proc

FCMP

Itse kirjoitetut funktiot

Hash

objekti

”Taulukkotietorakenne”

Slide2

Yleismoduuli(Yleisosa)

Slide3

proc fcmp

outlib

=

lt_comu.functions.kurssaus_ltl

;

subroutine

kurssaus_ltl

(

valkd_in

$,

valuutta_rm_in

,

kurssattu_rm,

kurssi_out

,

paluukd

,

sqlkd

);

outargs

kurssattu_rm

,

kurssi_out

,

paluukd

,

sqlkd

;

attrib

kurssattu_rm

format

=

17.2

length

=

8

;

attrib

kurssi_out

format

=

8.4

length

=

8

;

attrib

paluukd

format

=

8.

length

=

8

;

attrib

sqlkd

format

=

8.

length

=

8

;

sqlselect

=

'select curate into :

sqlresults

from

comu.exchrate

where

curncycd

= "'

||trim(

valkd_in

)||

'" order by

enddt

desc

;'

;

rc

=

run_macro

(

'

hae_valuuttakurssi

'

,

sqlselect

, sqlresults,

sqlrc,

sqlobs

);

if

sqlrc

eq

0

and

sqlobs

gt

0

then

paluukd

=

0

;

else

paluukd

=

1

;

sqlkd

=

sqlrc

;

kurssi_out

=

sqlresults

;

kurssattu_rm

=

valuutta_rm_in

*

kurssi_out

;

endsub

;

quit

;

Slide4

%macro hae_valuuttakurssi;%let

sqlselect

=

%

sysfunc

(

dequote

(&

sqlselect

));

%let

sqlresults

=;

proc

sql

outobs

=

1

noprint

;

&

sqlselect

;

quit

;

%let

sqlresults

=&

sqlresults

;

%let

sqlrc

=&

sqlrc

;

%let

sqlobs

=&

sqlobs

;

%

mend

hae_valuuttakurssi

;

Slide5

data nimi_muutettu_1;set

nimi_muutettu_2;

attrib

valkd_in

format

=

$3.

length

= $

3

informat

=

$3.

;

attrib

valuutta_rm_in

format

=

17.2

length

=

8

informat

=

17.2

;

attrib

kurssi_out

format

=

8.4

length

=

8

informat

=

8.4

;

attrib

kurssattu_rm

format

=

commax17.2

length

=

8

informat

=

commax17.2

;

attrib

paluukd

format

=

8.

length

=

8

informat

=

8.

;

attrib

sqlkd

format

=

8.

length

=

8

informat

=

8.

;

attrib

arvonal_ltl_alle_1v

format

=

commax17.2

length

=

8

informat

=

commax17.2

;

attrib

arvonal_ltl_1_5v

format

=

commax17.2

length

=

8

informat

=

commax17.2

;

.

.

...

Lisää

SAS-

koodia

...

.

.

Slide6

/* Jos valuutta ei ole liti, tehdään rahamääräälle valuuttamuunnos. */if valuutta_kdi

ne

'LTL'

then

do

;

valkd_in = valuutta_kdi;

valuutta_rm_in = arvonalent_val;

kurssattu_rm =

.

;

call

kurssaus_ltl

(valkd_in, valuutta_rm_in, kurssattu_rm,

kurssi_out, paluukd, sqlkd)

;

if

paluukd

ne

0

then

put

’VAROITUS: Poikkeus kurssauksessa '

paluukd= sqlkd= ’.’;

end

;

if

lopetus_pvm

eq

.

then

lopetus_pvm

=

0

;

/* Lasketaan laina-aika makrolla. */

%

maturiteetti(lopetus_pvm,avaus_pvm,vk,vv,kk,pp,pv0);

select

(valuutta_kdi);

when

(

'LTL'

)

do

;

select

;

when

(vv

eq

0

)

do

;

arvonal_ltl_alle_1v = arvonalent_val;

end

;

... SAS-koodi jatkuu...

run;

Slide7

HASH Objekti”Taulukkotietorakenne”

Slide8

data nimi_muutettu_3 nimi_muutettu_4

nimi_muutettu_5

nimi_muutettu_6

;

merge

suoherva.liikevaihto_12kk

(

in

=lv)

suoherva.sopimus_tapahtumat

(

in

=st)

;

by

pankki astun

;

attrib

sarake_55_rm

format

=

commax17.2

length

=

8

;

attrib

sarake_60_rm

format

=

commax17.2

length

=

8

;

 

if

(_n_ eq

1

)

then

do

;

* Luodaan hash-taulu konttorissa tehdyistä maksuista.;

declare

hash hmaksut(dataset:

”nimi_muutettu_sum"

);

hmaksut.defineKey(

"pankki"

,

"astun"

);

hmaksut.defineData(

"pankki"

,

"astun"

,

"kappalemaara"

,

"rahamaara"

);

hmaksut.defineDone();

 

Slide9

* Luodaan hash-taulu omista varoista.; declare hash omatvara(ordered:

"a"

);

omatvara.defineKey(

"oytun"

,

"oyvol_luokitt1

"

);

omatvara.defineData(

"oytun"

,

"oyvol_luokitt1"

,

"oyvol_tietotyyppi"

,

"oyvol_rahamaara"

);

omatvara.defineDone

();

do

until

(eof_toy_vol);

set

kirjasto.toy_volyymit

(

keep

=oytun oyvol_luokitt1

oyvol_tietotyyppi

oyvol_rahamaara

)

end

=eof_toy_vol;

if

oyvol_tietotyyppi =

'CA'

and

oyvol_luokitt1 in(

'40'

,

'01'

)

and

substr(oytun,

7

,

4

) eq

'9000'

then

do

;

omatvara.add

();

end

;

end

;

end

;

Slide10

pankki = substr(pankki,1,6);astun = astun;

rc = hmaksut.find();

select

(rc);

when

(

0

)

do

;

/* Asiakkaalle löytyi maksutoimeksiantoja. */

if

kappalemaara ge

12

then

do

;

/* Haetaan hash-taulusta pankkien omat varat. */

oytun = cats(pankki,

'9000'

);

oyvol_luokitt1 =

'40'

;

rc = omatvara.find();

select

(rc);

when

(

0

)

do

;

/* Haku onnistui. */

sarake_55_rm = oyvol_rahamaara;

end

;

when

(

160038

)

do

;

/*

Pankille ei löytynyt omia

varoja. Luokittelu 40.

*/

sarake_55_rm =

.

;

end

;

otherwise

do;

put

'VIRHE: Pankin omien varojen haku

hash-taulusta

epäonnistui

. Luokittelukoodi 40. '

pankki= rc

= ’.’;

put

'VIRHE: Ajo kaadetaan.'

;

abort

;

end

;

end

;

Slide11

oyvol_luokitt1 = '01';

rc = omatvara.find();

select

(rc);

when

(

0

)

do

;

/* Haku onnistui. */

sarake_60_rm = oyvol_rahamaara;

end

;

when

(

160038

)

do

;

/* Pankille ei löytynyt omia varoja. Luokittelu 01. */

sarake_60_rm =

.

;

end

;

otherwise

do;

put

'VIRHE: Pankin omien varojen haku

hash-taulusta

epäonnistui

. Luokittelukoodi 01. '

pankki= rc=;

put

'VIRHE: Ajo kaadetaan.'

;

abort

;

end

;

end

;

end

;

else

do

;

output

nimi_muutettu_5;

end

;

end

;

Slide12

when (

160038

)

do

;

/*

Asiakkaalle ei löytynyt maksutoimeksiantoja. */

output

nimi_muutettu_6;

end

;

otherwise

do;

/*

Ilmeisesti joku todellinen ongelma. Tehdään virhe. */

put

'VIRHE: Haku maksuliikkeen hash-taulusta epäonnistui. '

rc

=

'.'

;

abort

;

end

;

end

;

run

;