viper.p 201 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350
  1. /*
  2. Name : Viper.p
  3. Purpose: Progress wrapper for viper.dll (*persistent*)
  4. Copyright: IAP GmbH 1997 - 2002
  5. Author: Klaus Erichsen, Jirko Cassuben, Bernd Hellmann ...
  6. Version: 970728
  7. ...
  8. jc, 04.10.01: SetDocTitle
  9. bh, 01.03.02: New API for Viper3.0
  10. changed cfg viper.i included
  11. Last change: bh 03.02.03 16:33:17
  12. */
  13. /** define OPTIONS/SWITCHES */
  14. /*
  15. * Configuration file included by viper.p.
  16. * Allows user to configure certain aspects of
  17. * viper
  18. */
  19. /** Application directory DIR */
  20. /** relative Viper subdir DIR */
  21. /** Basic Viper Function API [*yes|no] */
  22. /** Frame Designer API [*yes|no] */
  23. /** vfl/vfr IO [*yes|no] */
  24. /** xml IO [yes|*no] */
  25. /** db IO [yes|*no] */
  26. /** Basic Viper API [*yes|no] */
  27. /** Should Viper.p run in "empty" mode? This is used for speed tests.
  28. If Empty is set to on, every procedure call is immediately ended. [*off|on] */
  29. /** Delimiter possible for use in Progress programs. STRING */
  30. /** use persitence ? */
  31. /** improve Viper-speed but slow down Progress
  32. (0 or HIGH values guarantee increased Progress-speed) INT [0 - 9999] */
  33. /** Path of viper32.dll */
  34. /** SHOULD PDFPRINTING BE ACTIVATED? [*on|off] */
  35. /** SHOULD WEBPRINTING BE ACTIVATED?
  36. ONLY DO THIS, WHEN YOU ARE USING WEBSPEED!!!! [on|*off] */
  37. /** Select the printername used for webprinting
  38. This has to be a postscript printerdriver!!!
  39. You do not really need to have a postscript printer to use this,
  40. it is enough to have the driver installed. */
  41. /** the ghostscript installation directory */
  42. /** the ghostscript exe file */
  43. /** the ghostscript lib-dir (for people using a stock gs 6.01: add "\lib") */
  44. /** font path providing fonts to gs seperate directories by ; */
  45. /** temporary directory used for web printing. THIS IS THE PATH FOR WEBSPEED */
  46. /** temporary directory used for web printing. THIS IS THE PATH FOR THE WEBSERVER */
  47. /** Basic Viper Function API */
  48. /*
  49. Name : Vpf.i
  50. Purpose: Function interface
  51. Copyright:
  52. Author:
  53. Version:
  54. 25/02/03 added vpr_toRTF
  55. Last change: IAP 17 Mar 2003 2:59 am
  56. * 17.03.2003 jc vpr_GetPreviewStatus
  57. * 04.05.2005 jc vpr_GetCellTextHeight
  58. * 03.08.2006 jc vpr_GetGroupHPos, vpr_GetGroupWidth
  59. */
  60. /** GetCellWidth - retrieve the width of a cell **/
  61. FUNCTION vpr_GetCellWidth RETURNS INT (
  62. INPUT p-cell AS CHAR,
  63. INPUT p-group AS CHAR) :
  64. DEF VAR p-width AS INT NO-UNDO.
  65. RUN VpGetCellWidth(CAPS(p-cell), CAPS(p-group), OUTPUT p-width).
  66. RETURN (p-width).
  67. END.
  68. /** gives height of cell **/
  69. FUNCTION vpr_GetCellHeight RETURNS INT (
  70. INPUT p-cell AS CHAR,
  71. INPUT p-group AS CHAR):
  72. DEF VAR p-height AS INT NO-UNDO.
  73. RUN VpCellHeight(CAPS(p-cell), CAPS(p-group), OUTPUT p-height).
  74. RETURN (p-height).
  75. END.
  76. /** Returns height of group. The height of the group
  77. is the height of the heighest cell. */
  78. FUNCTION vpr_GetGroupHeight RETURNS INT (
  79. INPUT p-group AS CHAR):
  80. DEF VAR p-height AS INT NO-UNDO.
  81. RUN VpGroupHeight(CAPS(p-group), OUTPUT p-height).
  82. RETURN(p-height).
  83. END.
  84. /** Returns free vertical space on page (with flushed cells) */
  85. FUNCTION vpr_GetPageVSpace RETURNS INT ():
  86. DEF VAR p-space AS INT NO-UNDO.
  87. RUN VpGetFree(OUTPUT p-space).
  88. RETURN (p-space).
  89. END.
  90. /** Returns vertical position of cursor */
  91. FUNCTION vpr_GetPageVPos RETURNS INT () :
  92. DEF VAR p-pos AS INT NO-UNDO.
  93. RUN VpGetPos(OUTPUT p-pos).
  94. RETURN(p-pos).
  95. END.
  96. /** Returns number of pages (=actual page) */
  97. FUNCTION vpr_GetPageNo RETURNS INT ():
  98. DEF VAR p-page AS INT NO-UNDO.
  99. RUN VpGetPages(OUTPUT p-page).
  100. RETURN(p-page).
  101. END.
  102. /** GetCellVPos - get the vertical position of a cell */
  103. FUNCTION vpr_GetCellVPos RETURNS INT (
  104. INPUT p-group AS CHAR,
  105. INPUT p-cells AS CHAR) :
  106. DEF VAR p-VPos AS INT NO-UNDO.
  107. RUN VpGetCellVPos(INPUT CAPS(p-group), INPUT CAPS(p-cells), OUTPUT p-VPos).
  108. RETURN(p-vpos).
  109. END.
  110. /** GetCellHPos - get the horizontal position of a cell*/
  111. FUNCTION vpr_GetCellHPos RETURNS INT (
  112. INPUT p-group AS CHAR,
  113. INPUT p-cells AS CHAR):
  114. DEF VAR p-HPos AS INT NO-UNDO.
  115. RUN VpGetCellHPos(INPUT CAPS(p-group), INPUT CAPS(p-cells), OUTPUT p-HPos).
  116. RETURN(p-hpos) .
  117. END.
  118. /** GetGroupVPos - get the vertical position of a group */
  119. FUNCTION vpr_GetGroupVPos RETURNS INT (
  120. INPUT p-group AS CHAR):
  121. DEF VAR p-VPos AS INT NO-UNDO.
  122. RUN VpGetGroupVPos(INPUT CAPS(p-group), OUTPUT p-VPos).
  123. RETURN (p-vpos).
  124. END.
  125. /** GetCellLineCount - return the number of lines in a cell*/
  126. FUNCTION vpr_GetCellLineCount RETURNS INT (
  127. INPUT p-group AS CHAR,
  128. INPUT p-cells AS CHAR):
  129. DEF VAR p-LineCount AS INT NO-UNDO.
  130. RUN VpGetCellLineCount(INPUT CAPS(p-group), INPUT CAPS(p-cells), OUTPUT p-LineCount).
  131. RETURN (p-LineCount).
  132. END.
  133. FUNCTION vpr_GetPrinterAttrib RETURNS CHAR (
  134. INPUT p_attrib AS CHAR) :
  135. DEF VAR p_value AS INT NO-UNDO.
  136. RUN VpGetPrinterAttrib(CAPS(p_attrib), OUTPUT p_value).
  137. RETURN(TRIM(STRING(p_value))).
  138. END.
  139. /* takes string + attributes and returns rtf-formatted string */
  140. FUNCTION vpr_toRTF RETURNS CHAR(
  141. INPUT p-InString AS CHAR,
  142. INPUT p-Attribs AS CHAR):
  143. DEF VAR p-OutString AS CHAR NO-UNDO.
  144. RUN vpr_Asc2RTF (p-InString,
  145. p-Attribs,
  146. OUTPUT p-OutString).
  147. RETURN (p-OutString).
  148. END FUNCTION.
  149. /*
  150. * Get the current preview state (hidden/visible)
  151. *
  152. * 17.03.03 jc
  153. */
  154. FUNCTION vpr_GetPreviewStatus RETURNS CHAR (
  155. INPUT p-wait AS INT) :
  156. DEF VAR p-status AS INT NO-UNDO.
  157. RUN VpGetPreviewStatus(INPUT p-wait, OUTPUT p-status).
  158. RETURN IF p-status=1 THEN "visible" ELSE "hidden".
  159. END.
  160. /** return height the cell would need to display the whole text
  161. * 04.05.05 jc
  162. **/
  163. FUNCTION vpr_GetCellTextHeight RETURNS INT (
  164. INPUT p-cell AS CHAR,
  165. INPUT p-group AS CHAR):
  166. DEF VAR p-height AS INT NO-UNDO.
  167. RUN VpGetCellTextHeight(CAPS(p-cell), CAPS(p-group), OUTPUT p-height).
  168. RETURN (p-height).
  169. END.
  170. /** return width the cell would needs to display the text without additional
  171. * linebreaking
  172. * 04.05.05 jc
  173. **/
  174. FUNCTION vpr_GetCellTextWidth RETURNS INT (
  175. INPUT p-cell AS CHAR,
  176. INPUT p-group AS CHAR):
  177. DEF VAR p-height AS INT NO-UNDO.
  178. RUN VpGetCellTextWidth(CAPS(p-cell), CAPS(p-group), OUTPUT p-height).
  179. RETURN (p-height).
  180. END.
  181. /** return width the cell would needs to display the text without additional
  182. * linebreaking
  183. * 04.05.05 jc
  184. **/
  185. FUNCTION vpr_GetGroupHPos RETURNS INT (
  186. INPUT p-group AS CHAR):
  187. DEF VAR p-hpos AS INT NO-UNDO.
  188. RUN VpGetGroupHPos(CAPS(p-group), OUTPUT p-hpos).
  189. RETURN (p-hpos).
  190. END.
  191. /** return width the cell would needs to display the text without additional
  192. * linebreaking
  193. * 04.05.05 jc
  194. **/
  195. FUNCTION vpr_GetGroupWidth RETURNS INT (
  196. INPUT p-group AS CHAR):
  197. DEF VAR p-width AS INT NO-UNDO.
  198. RUN VpGetGroupWidth(CAPS(p-group), OUTPUT p-width).
  199. RETURN (p-width).
  200. END.
  201. FUNCTION vpr_GetGroupObjects RETURNS CHARACTER (INPUT p-group AS CHARACTER,
  202. INPUT p-type AS CHARACTER):
  203. DEFINE VARIABLE lp-list AS MEMPTR NO-UNDO.
  204. DEFINE VARIABLE lp-ret AS CHARACTER NO-UNDO.
  205. SET-SIZE(lp-list) = 32000.
  206. RUN VpGetGroupObjects(CAPS(p-group), CAPS(p-type), OUTPUT lp-list).
  207. lp-ret = STRING(lp-list).
  208. /*SET-SIZE(lp-list) = 0.*/
  209. RETURN lp-ret.
  210. END FUNCTION.
  211. /** Frame Designer API */
  212. /*
  213. File: wt.i
  214. Author: Klaus Erichsen
  215. Purpose: Worktable-include for main frame
  216. ke, 981121; Added images
  217. ke, 990426; Tested: Work-Tables are much faster then Temp-Tables
  218. ke, 000819; Added remarks to the objects
  219. ke, 000819; Default values are no longer stored in the vfl.
  220. WARNING: NEVER CHANGE A DEFAULT VALUE IN THE FUTURE!!!
  221. bh, 041116; WORK -> TEMP-TABLE
  222. bh, 041116; order and private-data
  223. Last change: BH 18 Apr 2002 2:14 pm
  224. */
  225. /* use WORK or TEMP tables */
  226. /* The secret factor to calculate from pixel to 1/10 mm
  227. It is 1/72 inch, I think. */
  228. /* First/last font number for cells. */
  229. DEF VAR l-FirstCellFont AS INT NO-UNDO INIT 12.
  230. DEF VAR l-LastCellFont AS INT NO-UNDO INIT 27.
  231. /* Color used for choose from color-wheel. */
  232. DEF VAR s-RecColor AS INT INIT 16 NO-UNDO.
  233. /* Decides whether we are in debug mode or not. */
  234. DEF VAR g-Debug AS LOG NO-UNDO.
  235. /* Hold the setup information of the active vfl file. */
  236. DEF TEMP-TABLE VflSetupDef NO-UNDO
  237. FIELD Version AS CHAR.
  238. DEF BUFFER VflSetup FOR TEMP-TABLE VflSetupDef.
  239. CREATE VflSetup.
  240. /* Worktable to hold Viper Reports. */
  241. DEF TEMP-TABLE VRepDef NO-UNDO
  242. FIELD Num AS INT INIT 0 /* unique number */
  243. FIELD WorkCopy AS LOG INIT FALSE /* Is this one a working copy? */
  244. FIELD Name AS CHAR INIT "" FORMAT "X(32)" /* unique name */
  245. FIELD ActNum AS INT /* unique number for all objects in report */
  246. FIELD FontNam AS CHAR EXTENT 16 INIT "Times New Roman, size=12"
  247. FIELD GridWidth AS INT INIT 8 /* 2 mm */
  248. FIELD GridHeight AS INT INIT 8
  249. FIELD GridVertical AS INT INIT 3
  250. FIELD GridHorizontal AS INT INIT 3
  251. /* Paper size (not in use) */
  252. FIELD Width-mm AS INT INIT 0
  253. FIELD Height-mm AS INT INIT 0
  254. /* Paper orientation, default is Portrait. */
  255. FIELD Portrait AS LOG INIT TRUE
  256. /* PaperType (A4, etc) */
  257. FIELD PaperType AS CHAR INIT ""
  258. /* */
  259. FIELD Rem AS CHAR INIT "" /* remarks */
  260. FIELD Private-Data AS CHAR INIT "" /* additional information not used in vfd*/
  261. FIELD Order AS INT INIT 0.
  262. DEF BUFFER VReport FOR TEMP-TABLE VRepDef.
  263. /* Worktable for groups. */
  264. DEF TEMP-TABLE VGroup NO-UNDO
  265. FIELD Num AS INT
  266. FIELD ReportNum AS INT
  267. FIELD Name AS CHAR
  268. /* Skip before and after an group. */
  269. FIELD PreSkip AS INT
  270. FIELD PostSkip AS INT
  271. FIELD Unit AS CHAR INIT "mm"
  272. FIELD RelPos AS LOG /* Should relative cell positioning be keeped? */
  273. FIELD Rem AS CHAR INIT "" /* remarks */
  274. FIELD Private-Data AS CHAR INIT "" /* additional information not used in vfd*/
  275. FIELD Order AS INT INIT 0
  276. .
  277. /* Worktable to hold Viper objects. */
  278. DEF TEMP-TABLE VObj NO-UNDO
  279. /* Name of report and the unique number of object. */
  280. FIELD Num AS INT
  281. FIELD ReportNum AS INT
  282. FIELD GroupNum AS INT
  283. FIELD Name AS CHAR
  284. /* Objects are only: cell, text */
  285. FIELD Type AS CHAR
  286. /* Is this field new created via dialog? */
  287. FIELD Newbie AS LOG INIT FALSE
  288. /* Value of cell, used for type text. */
  289. FIELD TextValue AS CHAR
  290. /* X,Y,width,height */
  291. FIELD X AS INT
  292. FIELD Y AS INT
  293. FIELD Width AS INT
  294. FIELD Height AS INT
  295. /* X,Y,width,height in 1/10 mm. This is screen-independent. */
  296. FIELD X-mm AS INT
  297. FIELD Y-mm AS INT
  298. FIELD Width-mm AS INT
  299. FIELD Height-mm AS INT
  300. /* Orientation (caution: is int in viper api) */
  301. FIELD Align AS CHAR INIT "Left"
  302. /* Foregroundcolor/Backgroundcolor. */
  303. FIELD FgColour AS CHAR
  304. FIELD BgColour AS CHAR
  305. /* Font number. This is the Viper font number. */
  306. FIELD FontNo AS INT INIT 1
  307. /* Word Wrap (caution: is log in viper api) */
  308. FIELD AutoWrap AS CHAR INIT "Off"
  309. /* RTF allowed */
  310. FIELD RTFAllow AS LOG
  311. /* Should the cell automatically resize in vertical direction? */
  312. FIELD AutoResize AS LOG INIT TRUE
  313. FIELD Rem AS CHAR INIT "" /* remarks */
  314. FIELD Private-Data AS CHAR INIT "" /* additional information not used in vfd*/
  315. FIELD Order AS INT INIT 0
  316. /* zOrder of the cell. - currently unused */
  317. FIELD zOrder AS INTEGER INIT ?
  318. /* should the cell keep it text value after a flush group? useful for labels */
  319. FIELD KeepText AS LOG INIT FALSE /* default to NO */
  320. .
  321. /* Worktable for Rectangles. */
  322. DEF TEMP-TABLE VRec NO-UNDO
  323. FIELD Num AS INT
  324. FIELD ReportNum AS INT
  325. FIELD GroupNum AS INT
  326. FIELD Name AS CHAR
  327. FIELD Rounded AS LOG /* make the rectangle rounded? */
  328. FIELD Filled AS LOG
  329. FIELD EdgePix AS INT INIT 1 /* This is no true attribute of viper. */
  330. /* Color is defined as bgcolor according to Progress. */
  331. FIELD BgColour AS CHAR
  332. FIELD Newbie AS LOG
  333. /* X,Y,width,height */
  334. FIELD X AS INT
  335. FIELD Y AS INT
  336. FIELD Width AS INT
  337. FIELD Height AS INT
  338. /* X,Y,width,height in 1/10 mm. This is screen-independent. */
  339. FIELD X-mm AS INT
  340. FIELD Y-mm AS INT
  341. FIELD Width-mm AS INT
  342. FIELD Height-mm AS INT
  343. FIELD Rem AS CHAR INIT "" /* remarks */
  344. FIELD Private-Data AS CHAR INIT "" /* additional information not used in vfd*/
  345. FIELD Order AS INT INIT 0
  346. /* zOrder */
  347. FIELD zOrder AS INTEGER INIT ?
  348. .
  349. /* Worktable for Lines. */
  350. DEF TEMP-TABLE VLin NO-UNDO
  351. FIELD Num AS INT
  352. FIELD ReportNum AS INT
  353. FIELD GroupNum AS INT
  354. FIELD Name AS CHAR
  355. FIELD Type AS CHAR INIT "H" /* h: horizontal v: vertical */
  356. FIELD X AS INT /* Starting point */
  357. FIELD Y AS INT
  358. FIELD Len AS INT /* Length of an horizontal/vertical line */
  359. FIELD Height AS INT /* Height of an horizontal line */
  360. /* Look alike. The 0 value is a solid line. */
  361. FIELD Style AS INT INIT 0
  362. /* X,Y,width,height in 1/10 mm. This is screen-independent. */
  363. FIELD X-mm AS INT
  364. FIELD Y-mm AS INT
  365. FIELD Len-mm AS INT
  366. FIELD Height-mm AS INT
  367. /* Color is defined as bgcolor according to Progress. */
  368. FIELD BgColour AS CHAR
  369. FIELD Rem AS CHAR INIT "" /* remarks */
  370. FIELD Private-Data AS CHAR INIT "" /* additional information not used in vfd*/
  371. FIELD Order AS INT INIT 0
  372. /* zOrder */
  373. FIELD zOrder AS INTEGER INIT ?
  374. .
  375. /* Worktable for images. */
  376. DEF TEMP-TABLE VImg NO-UNDO
  377. FIELD Num AS INT
  378. FIELD ReportNum AS INT
  379. FIELD GroupNum AS INT
  380. FIELD Name AS CHAR
  381. /* The handle to get the object in the frame. */
  382. FIELD Newbie AS LOG
  383. /* Adjust image to fit into defined space? */
  384. FIELD Adjust AS LOG INIT TRUE
  385. /* Should the adjustment remember the original x/y ration? */
  386. FIELD Ratio AS LOG INIT TRUE
  387. /* The image itself. */
  388. FIELD ImgFile AS CHAR
  389. /* Image type. Known types are:
  390. bmp: windows bitmap */
  391. FIELD ImgType AS CHAR INIT "Bmp"
  392. /* X,Y,width,height */
  393. FIELD X AS INT
  394. FIELD Y AS INT
  395. FIELD Width AS INT
  396. FIELD Height AS INT
  397. /* X,Y,width,height in 1/10 mm. This is screen-independent. */
  398. FIELD X-mm AS INT
  399. FIELD Y-mm AS INT
  400. FIELD Width-mm AS INT
  401. FIELD Height-mm AS INT
  402. FIELD Rem AS CHAR INIT "" /* remarks */
  403. FIELD Private-Data AS CHAR INIT "" /* additional information not used in vfd*/
  404. FIELD Order AS INT INIT 0
  405. /* zOrder */
  406. FIELD zOrder AS INTEGER INIT ?
  407. .
  408. /*
  409. File: vfd.i (taken from VReport.p)
  410. Author: Klaus Erichsen
  411. Purpose: Viper Frame Designer - realize reports
  412. 20.11.97, ke; changed program to persistent start
  413. 11.04.00, ke; fixed bug with fonts with numbers greater 8
  414. bh, 041116; order and private-data
  415. Last change: bh 31.01.03 16:37:30
  416. */
  417. /* Name of Report from Library. */
  418. DEF VAR l-RepName AS CHAR NO-UNDO.
  419. /* Should this program run in testmode? The testmode is used
  420. from the Viper Frame Designer. For normal use set it to false. */
  421. DEF VAR l-TestMode AS LOG NO-UNDO.
  422. /* Information about the fonts. */
  423. DEF VAR l-Format AS CHAR EXTENT 16 NO-UNDO.
  424. DEF VAR l-Size AS DEC EXTENT 16 NO-UNDO.
  425. DEF VAR l-Font AS CHAR EXTENT 16 NO-UNDO.
  426. PROCEDURE vpr_ActivateReport:
  427. DEF INPUT PARAM p-RepName AS CHAR NO-UNDO.
  428. FIND FIRST VReport WHERE VReport.Name = p-RepName NO-LOCK NO-ERROR.
  429. RUN vpr_ActivateReportNum (VReport.Num).
  430. RETURN.
  431. END PROCEDURE.
  432. PROCEDURE vpr_ActivateReportNum:
  433. DEF INPUT PARAM p-RepNum AS INT NO-UNDO.
  434. /* String for font analysis. */
  435. DEF VAR fstr AS CHAR NO-UNDO.
  436. DEF VAR ii AS INT NO-UNDO.
  437. /* Now put the wished report into scope. */
  438. FIND FIRST VReport WHERE VReport.Num = p-RepNum NO-LOCK NO-ERROR.
  439. /* Store report name for later use. */
  440. l-RepName = VReport.Name.
  441. /* Now get the font information from the report. */
  442. DO ii = 1 TO 16:
  443. fstr = VReport.FontNam[ii] + " ".
  444. /* The fontname is the first entry and limited with an comma, e.g.
  445. Font2=Arial, size=14 italic bold
  446. Font3=Times New Roman, size=16 */
  447. l-Font[ii] = TRIM(ENTRY(1, fstr)).
  448. l-Format[ii] =
  449. (IF INDEX (fstr, "bold") > 0 THEN ",bold" ELSE "")
  450. + (IF INDEX (fstr, "italic") > 0 THEN ",italic" ELSE "")
  451. + (IF INDEX (fstr, "underline") > 0 THEN ",underline" ELSE "")
  452. + (IF INDEX (fstr, "strikeout") > 0 THEN ",strikeout" ELSE "").
  453. /* Get the size . Some fonts have no size entry. */
  454. IF INDEX( fstr, "size" ) > 0 THEN ASSIGN
  455. /* get partial string behind size value. */
  456. fstr = SUBSTR(fstr, INDEX( fstr, "size" ) + 5)
  457. /* get numeric string (which ends with an " ". */
  458. fstr = SUBSTR(fstr, 1, INDEX( fstr, " " ) - 1)
  459. fstr = REPLACE(fstr,".",SESSION:NUMERIC-DECIMAL-POINT).
  460. l-size[ii] = DECIMAL(fstr).
  461. END. /* of do ii */
  462. RUN vpr_InitDoc.
  463. END PROCEDURE. /* activatereport */
  464. /*
  465. * set some document/report properties
  466. * 25.08.05 jc
  467. */
  468. PROCEDURE vpr_InitDoc:
  469. RUN vpr_setDocAttrib("PAPERSIZE=" + VReport.PaperType).
  470. /* Set orientation. */
  471. IF NOT VReport.Portrait THEN
  472. RUN vpr_SetPageOrientation IN THIS-PROCEDURE ("Landscape").
  473. END PROCEDURE.
  474. /*- Initializes one, some or all groups. */
  475. PROCEDURE vpr_InitGroups:
  476. /* Separeted list of groups. If empty then realize all groups. */
  477. DEF INPUT PARAM p-Groups AS CHAR NO-UNDO.
  478. DEF VAR lp-ActGrp AS CHAR NO-UNDO.
  479. /* Working vars */
  480. DEF VAR l-Line AS CHAR NO-UNDO.
  481. DEF VAR l-Key AS CHAR NO-UNDO.
  482. DEF VAR l-Val AS CHAR NO-UNDO.
  483. DEF VAR ii AS INT NO-UNDO.
  484. /* If Empty then fill with all groups. */
  485. IF p-Groups = "" THEN
  486. DO:
  487. FOR EACH VGroup WHERE VGroup.ReportNum = VReport.Num:
  488. p-Groups = p-Groups + "," + VGroup.Name.
  489. END.
  490. p-Groups = SUBSTRING(p-Groups, 2).
  491. END.
  492. /** Go through the groups. */
  493. DO ii = 1 TO NUM-ENTRIES(p-Groups):
  494. FIND FIRST VGroup
  495. WHERE VGroup.ReportNum = VReport.Num
  496. AND VGroup.Name = ENTRY(ii, p-Groups) NO-ERROR.
  497. IF NOT AVAILABLE VGroup THEN
  498. DO:
  499. MESSAGE 'Gruppe ' ENTRY(ii, p-Groups) ' nicht vorhanden '
  500. VIEW-AS ALERT-BOX.
  501. NEXT.
  502. END.
  503. /* Set the Skip area around the group. */
  504. IF VGroup.PreSkip > 0
  505. OR VGroup.PostSkip > 0 THEN
  506. RUN vpr_SetGroupSkip IN THIS-PROCEDURE
  507. (VGroup.Name, VGroup.Unit, VGroup.PreSkip, VGroup.PostSkip).
  508. /* Set the cell pos mode if mode is rel position (0 is default). */
  509. IF VGroup.RelPos THEN
  510. RUN vpr_SetGroupCellPositioning IN THIS-PROCEDURE (VGroup.Name, 1).
  511. FOR EACH VObj WHERE VObj.ReportNum = VReport.Num
  512. AND VObj.GroupNum = VGroup.Num:
  513. /* Define the cell. That's not needed. Cell is defined automatically.
  514. RUN DefCell IN THIS-PROCEDURE (VObj.Name, VGroup.Name). */
  515. /*- Set the Position. */
  516. RUN vpr_SetCellPos IN THIS-PROCEDURE
  517. ( VObj.Name, VGroup.Name /* identification */
  518. ,VObj.x-mm, VObj.y-mm /* position */
  519. ,VObj.Width-mm, VObj.Height-mm). /* Size */
  520. /* Set the Alignment if not the default left alignment. */
  521. IF NOT CAN-DO(",Left", VObj.Align) THEN
  522. RUN vpr_SetCellAlign IN THIS-PROCEDURE
  523. ( VObj.Name, VGroup.Name
  524. ,LOOKUP(VObj.Align, "Right,Centered,Justify") + 1).
  525. /* Set the color if defined. */
  526. IF VObj.FgColour <> ""
  527. OR VObj.BgColour <> "" THEN
  528. RUN vpr_SetCellColor IN THIS-PROCEDURE
  529. ( VObj.Name, VGroup.Name, VObj.FgColour, VObj.BgColour).
  530. /* Set the font if defined (which should be normal). */
  531. IF VObj.FontNo >= 1
  532. AND VObj.FontNo <= 16 THEN
  533. RUN vpr_SetCellFont IN THIS-PROCEDURE
  534. ( VObj.Name, VGroup.Name,
  535. l-Size[VObj.FontNo], 0, l-Format[VObj.FontNo], l-Font[VObj.FontNo]).
  536. /* Set the Autowrap feature. */
  537. IF VObj.Autowrap = "On" OR VObj.Autowrap = "TRUE" THEN
  538. RUN vpr_SetCellWrap IN THIS-PROCEDURE
  539. ( VObj.Name, VGroup.Name, "ON").
  540. /* Set the RTF feature. Now use new syntax. */
  541. IF VObj.RTFAllow THEN
  542. RUN vpr_SetCellRTF IN THIS-PROCEDURE
  543. (VObj.Name, VGroup.Name, "ON").
  544. /* Set the Auto-Resize feature. Autoresize is on as default. */
  545. IF NOT VObj.AutoResize THEN
  546. RUN vpr_SetCellAutoResize IN THIS-PROCEDURE
  547. (VObj.Name, VGroup.Name, "ON").
  548. /* Set the KeepText (cellsplit=keeptext) feature. by default it is of.
  549. * this is useful for repeated (line?)-labels.
  550. */
  551. IF VObj.KeepText THEN
  552. RUN vpr_SetCellSplit IN THIS-PROCEDURE
  553. (VObj.Name, VGroup.Name, "Copy").
  554. /* Set the Value for test-mode or text-cell. */
  555. IF l-TestMode
  556. OR VObj.TYPE = "Text" THEN
  557. RUN vpr_SetCellText IN THIS-PROCEDURE
  558. ( VObj.Name, VGroup.Name
  559. , IF VObj.Type = "Text" THEN VObj.TextValue
  560. ELSE VObj.NAME ).
  561. END. /* of for each vobj. */
  562. /*
  563. * handle the grouped graphical object
  564. * (GraphObj)
  565. */
  566. DEFINE VARIABLE lp-attribs AS CHARACTER NO-UNDO.
  567. /* we start with the lines */
  568. FOR EACH VLin WHERE VLin.ReportNum = VReport.Num
  569. AND VLin.GroupNum = VGroup.Num:
  570. /*
  571. * build the attribute string. parts of this differ for each object
  572. * type, because the objects can have different attributes
  573. */
  574. RUN ip_stylenumber2string(VLin.Style, OUTPUT l-val).
  575. lp-attribs = "Style=" + l-val
  576. + ",Color=" + REPLACE(VLin.BgColour, ",", ":")
  577. + (IF VLin.zOrder <> ? THEN ",zOrder=" + STRING(VLin.zOrder) ELSE "")
  578. .
  579. IF VLin.Type = "H" THEN
  580. RUN vpr_SetGraphObj(VLin.name, VGroup.Name, "LINE",
  581. VLin.x-mm,
  582. VLin.y-mm,
  583. VLin.x-mm + VLin.Len-mm,
  584. VLin.y-mm,
  585. lp-attribs).
  586. IF VLin.type = "V" THEN
  587. RUN vpr_SetGraphObj(VLin.name, VGroup.Name, "LINE",
  588. VLin.x-mm,
  589. VLin.y-mm,
  590. VLin.x-mm,
  591. VLin.y-mm + VLin.Len-mm,
  592. lp-attribs).
  593. END. /* of for each Vlin */
  594. /* Bring the rectangles in view. */
  595. FOR EACH VRec WHERE VRec.ReportNum = VReport.Num
  596. AND VRec.GroupNum = VGroup.Num:
  597. /* Calc pixel size for rectangle check. */
  598. /* calc.i Make some calculations
  599. */
  600. /* of Pixel to mm */
  601. VRec.Width = VRec.Width-mm / 2.54.
  602. /* of Pixel to mm */
  603. /* calc.i Make some calculations
  604. */
  605. /* of Pixel to mm */
  606. VRec.Height = VRec.Height-mm / 2.54.
  607. /* of Pixel to mm */
  608. lp-attribs = "Color=" + REPLACE(VRec.BgColour, ",", ":")
  609. + (IF VRec.Filled THEN ",Fill=TRUE" ELSE "")
  610. + (IF VRec.zOrder <> ? THEN ",zOrder=" + STRING(VRec.zOrder) ELSE "")
  611. + (IF VRec.EdgePix <> ? THEN ",LineWidth=" + STRING(VRec.EdgePix) ELSE "")
  612. .
  613. RUN vpr_SetGraphObj(VRec.Name, VGroup.Name, (IF NOT VRec.Rounded THEN "RECT" ELSE "RNDRECT"),
  614. VRec.x-mm,
  615. VRec.y-mm,
  616. VRec.Width-mm,
  617. VRec.Height-mm,
  618. lp-attribs).
  619. END. /* for each VRec */
  620. /* And now add the images. */
  621. FOR EACH VImg WHERE VImg.ReportNum = VReport.Num
  622. AND VImg.GroupNum = VGroup.Num:
  623. FILE-INFO :FILE-NAME = VImg.ImgFile.
  624. lp-attribs = "Resize=" + STRING(VImg.Adjust)
  625. + ",KeepRatio=" + STRING(VImg.Ratio)
  626. + (IF FILE-INFO:FULL-PATHNAME <> ? THEN ",InitFile=" + FILE-INFO:FULL-PATHNAME ELSE "")
  627. + (IF VImg.zOrder <> ? THEN ",zOrder=" + STRING(VImg.zOrder) ELSE "")
  628. .
  629. RUN vpr_SetGraphObj(VImg.Name, VGroup.Name, "IMAGE",
  630. VImg.x-mm,
  631. VImg.y-mm,
  632. VImg.Width-mm,
  633. VImg.Height-mm,
  634. lp-attribs).
  635. /*
  636. RUN vpr_DefBMP IN THIS-PROCEDURE
  637. ( FILE-INFO :FULL-PATHNAME
  638. , VImg.x-mm
  639. , VImg.y-mm
  640. , VImg.Width-mm
  641. , VImg.Height-mm
  642. , (IF VImg.Adjust THEN "Resize" ELSE "NoResize") +
  643. "," + (IF VImg.Ratio THEN "KeepRatio" ELSE "NoKeepRatio")
  644. ).
  645. */
  646. END. /* of for each VImg */
  647. /* Show something in test-mode. */
  648. IF l-testmode THEN
  649. RUN vpr_FlushGroup IN THIS-PROCEDURE (VGroup.Name).
  650. /* Bring the grouprelated Lines in view. --- completely deprecated */
  651. /* FOR EACH VLin WHERE VLin.ReportNum = VReport.Num
  652. AND VLin.GroupNum = VGroup.Num:
  653. IF VLin.Type = "H" THEN
  654. RUN vpr_DefHLine IN THIS-PROCEDURE
  655. ( VLin.x-mm
  656. , VLin.y-mm
  657. , VLin.Len-mm
  658. , STRING(VLin.Style)
  659. , VLin.Height-mm
  660. , VLin.BgColour ).
  661. IF VLin.type = "V" THEN
  662. RUN vpr_DefVLine IN THIS-PROCEDURE
  663. ( VLin.x-mm
  664. , VLin.y-mm
  665. , VLin.Len-mm
  666. , STRING(VLin.Style)
  667. , VLin.Height-mm
  668. , VLin.BgColour ).
  669. END. */ /* of for each Vlin */
  670. END. /* of for each num-entries */
  671. END PROCEDURE. /* initgroups */
  672. /* Eingebaut fur Schmidt von Thyssen. */
  673. PROCEDURE vpr_ReInitTextCells:
  674. /* Separeted list of groups. If empty then realize all groups. */
  675. DEF INPUT PARAM p-Groups AS CHAR NO-UNDO.
  676. DEF VAR lp-ActGrp AS CHAR NO-UNDO.
  677. /* Working vars */
  678. DEF VAR l-Line AS CHAR NO-UNDO.
  679. DEF VAR l-Key AS CHAR NO-UNDO.
  680. DEF VAR l-Val AS CHAR NO-UNDO.
  681. DEF VAR ii AS INT NO-UNDO.
  682. /* If Empty then fill with all groups. */
  683. IF p-Groups = "" THEN
  684. DO:
  685. FOR EACH VGroup WHERE VGroup.ReportNum = VReport.Num:
  686. p-Groups = p-Groups + "," + VGroup.Name.
  687. END.
  688. p-Groups = SUBSTRING(p-Groups, 2).
  689. END.
  690. /** Go through the groups. */
  691. DO ii = 1 TO NUM-ENTRIES(p-Groups):
  692. FIND FIRST VGroup WHERE VGroup.ReportNum = VReport.Num
  693. AND VGroup.Name = ENTRY(ii, p-Groups).
  694. FOR EACH VObj WHERE VObj.ReportNum = VReport.Num
  695. AND VObj.GroupNum = VGroup.Num
  696. AND VObj.Type = "Text":
  697. /* Set the Value for text-cell. */
  698. RUN vpr_SetCellText IN THIS-PROCEDURE
  699. ( VObj.Name
  700. , VGroup.Name
  701. , VObj.TextValue ).
  702. END. /* of for each vobj. */
  703. END. /* of for each num-entries */
  704. END PROCEDURE. /* reinittextcells */
  705. /* Deletes one, some or all groups. It is useful, if you printing more as
  706. one Report in one Document */
  707. PROCEDURE vpr_DelGroups:
  708. /* Separeted list of groups. If empty then delete all groups. */
  709. DEF INPUT PARAM p-Groups AS CHAR NO-UNDO.
  710. /* Working vars */
  711. DEF VAR l-Line AS CHAR NO-UNDO.
  712. DEF VAR l-Key AS CHAR NO-UNDO.
  713. DEF VAR l-Val AS CHAR NO-UNDO.
  714. DEF VAR ii AS INT NO-UNDO.
  715. DEF VAR l-text AS LOG NO-UNDO.
  716. /* If Empty then fill with all groups. */
  717. IF p-Groups = "" THEN
  718. DO:
  719. FOR EACH VGroup WHERE VGroup.ReportNum = VReport.Num:
  720. p-Groups = p-Groups + "," + VGroup.Name.
  721. END.
  722. p-Groups = SUBSTRING(p-Groups, 2).
  723. END.
  724. /* Find the group and delete all cells in this Group */
  725. DO ii = 1 TO NUM-ENTRIES(p-Groups):
  726. FIND FIRST VGroup WHERE VGroup.ReportNum = VReport.Num
  727. AND VGroup.Name = ENTRY(ii, p-Groups).
  728. RUN vpr_DelCell IN THIS-PROCEDURE ("*", VGroup.Name).
  729. END. /* of for each num-entries */
  730. END PROCEDURE. /* Delgroups */
  731. PROCEDURE vpr_InitRect:
  732. /* Bring the rectangles in view. */
  733. FOR EACH VRec WHERE VRec.ReportNum = VReport.Num
  734. AND (VRec.GroupNum = 0 OR VRec.GroupNum = ?):
  735. /* Calc pixel size for rectangle check. */
  736. /* calc.i Make some calculations
  737. */
  738. /* of Pixel to mm */
  739. VRec.Width = VRec.Width-mm / 2.54.
  740. /* of Pixel to mm */
  741. /* calc.i Make some calculations
  742. */
  743. /* of Pixel to mm */
  744. VRec.Height = VRec.Height-mm / 2.54.
  745. /* of Pixel to mm */
  746. /* Rounded Rectangle. */
  747. IF VRec.Rounded THEN
  748. RUN vpr_DefRndRect IN THIS-PROCEDURE
  749. ( VRec.x-mm
  750. , VRec.y-mm
  751. , VRec.Width-mm
  752. , VRec.Height-mm
  753. , VRec.Filled
  754. , VRec.BgColour).
  755. /* If filled rectangle use standard rectangle */
  756. ELSE IF VRec.Filled THEN
  757. RUN vpr_DefRect IN THIS-PROCEDURE
  758. ( VRec.x-mm
  759. , VRec.y-mm
  760. , VRec.Width-mm
  761. , VRec.Height-mm
  762. , 1
  763. , VRec.BgColour).
  764. /* Else build Pseudo-Rectangle to create border. Rectangles with
  765. width 1 are lines (from times, lines are not there). */
  766. ELSE
  767. DO:
  768. /* Top line */
  769. IF NOT VRec.Width = 1 THEN
  770. RUN vpr_DefHLine IN THIS-PROCEDURE
  771. ( VRec.x-mm
  772. , VRec.y-mm
  773. , VRec.Width-mm
  774. , 0
  775. , VRec.EdgePix
  776. , VRec.BgColour ).
  777. /* Left line */
  778. IF NOT VRec.Height = 1 THEN
  779. RUN vpr_DefVLine IN THIS-PROCEDURE
  780. ( VRec.x-mm
  781. , VRec.y-mm
  782. , VRec.Height-mm
  783. , 0
  784. , VRec.EdgePix
  785. , VRec.BgColour ).
  786. IF VRec.Height > 1
  787. AND VRec.Width > 1 THEN
  788. DO:
  789. /* Bottom Line */
  790. RUN vpr_DefHLine IN THIS-PROCEDURE
  791. ( VRec.x-mm
  792. , (VRec.Y-mm + VRec.Height-mm)
  793. , VRec.Width-mm
  794. , 0
  795. , VRec.EdgePix
  796. , VRec.BgColour ).
  797. /* Right Line */
  798. RUN vpr_DefVLine IN THIS-PROCEDURE
  799. ( (VRec.x-mm + VRec.Width-mm)
  800. , VRec.y-mm
  801. , VRec.Height-mm
  802. , 0
  803. , VRec.EdgePix
  804. , VRec.BgColour ).
  805. END.
  806. END. /* of pseudostriche */
  807. END. /* of for each */
  808. /* This is for Stukki/Imas. */
  809. END PROCEDURE. /* initrect */
  810. /* This one shows all lines which are not group related. */
  811. PROCEDURE vpr_InitLin:
  812. /* Bring the Lines in view. */
  813. FOR EACH VLin WHERE VLin.ReportNum = VReport.Num
  814. AND (VLin.GroupNum = 0 OR VLin.GroupNum = ?):
  815. IF VLin.Type = "H" THEN
  816. RUN vpr_DefHLine IN THIS-PROCEDURE
  817. ( VLin.x-mm
  818. , VLin.y-mm
  819. , VLin.Len-mm
  820. , VLin.Style
  821. , VLin.Height-mm
  822. , VLin.BgColour ).
  823. IF VLin.type = "V" THEN
  824. RUN vpr_DefVLine IN THIS-PROCEDURE
  825. ( VLin.x-mm
  826. , VLin.y-mm
  827. , VLin.Len-mm
  828. , VLin.Style
  829. , VLin.Height-mm
  830. , VLin.BgColour ).
  831. END. /* of for each Vlin */
  832. END PROCEDURE. /* initlin */
  833. /* Show all images. No matter to what group they belong. */
  834. PROCEDURE vpr_InitImg:
  835. /* Bring the images in view. */
  836. FOR EACH VImg WHERE VImg.ReportNum = VReport.Num
  837. AND (VImg.GroupNum = 0 OR VImg.GroupNum = ?):
  838. FILE-INFO :FILE-NAME = VImg.ImgFile.
  839. RUN vpr_DefBMP IN THIS-PROCEDURE
  840. ( FILE-INFO :FULL-PATHNAME
  841. , VImg.x-mm
  842. , VImg.y-mm
  843. , VImg.Width-mm
  844. , VImg.Height-mm
  845. , (IF VImg.Adjust THEN "Resize" ELSE "NoResize") +
  846. "," + (IF VImg.Ratio THEN "KeepRatio" ELSE "NoKeepRatio")
  847. ).
  848. END. /* of for each VImg */
  849. END PROCEDURE. /* initimg */
  850. /* Init all graphical objects. */
  851. PROCEDURE vpr_InitGraphObj:
  852. RUN vpr_InitRect.
  853. RUN vpr_InitLin.
  854. RUN vpr_InitImg.
  855. END.
  856. /* Setzt eine Gruppe auf eine bestimmte vertikale Position, die relativen Positionen
  857. innerhalb der Gruppen bleiben aber erhalten */
  858. PROCEDURE vpr_SetGroupVPosRel:
  859. DEF INPUT PARAMETER pp-GroupName AS CHAR NO-UNDO.
  860. DEF INPUT PARAMETER pp-VPos AS INT NO-UNDO.
  861. DEF VAR l-int AS INT NO-UNDO.
  862. DEF VAR l-int2 AS INT NO-UNDO.
  863. FIND FIRST VGroup
  864. WHERE VGroup.ReportNum = VReport.Num
  865. AND VGroup.Name = pp-GroupName
  866. NO-ERROR.
  867. IF NOT AVAILABLE VGroup THEN RETURN.
  868. /* Find y-pos of first cell/text. */
  869. OPEN QUERY q-VObj FOR
  870. EACH VObj
  871. WHERE VObj.ReportNum = VReport.Num
  872. AND VObj.GroupNum = VGroup.Num
  873. BY VObj.y-mm.
  874. GET FIRST q-VObj.
  875. ASSIGN
  876. l-Int = VObj.y-mm NO-ERROR.
  877. /* Find y-pos of first line. */
  878. OPEN QUERY q-VLin FOR
  879. EACH VLin
  880. WHERE VLin.ReportNum = VReport.Num
  881. AND VLin.GroupNum = VGroup.Num
  882. BY VLin.y-mm.
  883. GET FIRST q-VLin.
  884. ASSIGN
  885. l-Int2 = VLin.y-mm NO-ERROR.
  886. IF AVAILABLE VObj AND AVAILABLE VLin THEN
  887. l-Int = MINIMUM(l-int,l-int2).
  888. ELSE IF AVAILABLE VLin THEN
  889. l-int = l-int2.
  890. /* Set the Position. */
  891. DO WHILE AVAIL VObj:
  892. ASSIGN
  893. VObj.y-mm = VObj.y-mm - l-int + pp-VPos.
  894. RUN vpr_SetCellPos IN THIS-PROCEDURE
  895. ( VObj.Name, VGroup.Name
  896. , VObj.x-mm, VObj.y-mm
  897. , VObj.Width-mm, VObj.Height-mm).
  898. GET NEXT q-VObj.
  899. END.
  900. /* Set the Position for Lines. */
  901. DO WHILE AVAIL VLin:
  902. ASSIGN
  903. VLin.y-mm = VLin.y-mm - l-int + pp-VPos.
  904. GET NEXT q-VLin.
  905. END.
  906. END PROCEDURE. /* SetGroupVPosRel */
  907. /* Nur zum Testen KdV */
  908. PROCEDURE vpr_GetGroups:
  909. DEF INPUT PARAMETER p-report AS CHAR NO-UNDO.
  910. DEF OUTPUT PARAMETER p-grplst AS CHAR NO-UNDO.
  911. DEF BUFFER B-Vrep FOR TEMP-TABLE VrepDef.
  912. FIND FIRST B-Vrep
  913. WHERE B-Vrep.NAME = p-report
  914. NO-ERROR.
  915. IF AVAILABLE B-VRep THEN
  916. DO:
  917. FOR EACH VGroup WHERE VGroup.ReportNum = B-Vrep.Num:
  918. p-grplst = p-grplst + "," + VGroup.NAME.
  919. END.
  920. p-grplst = SUBSTRING(p-grplst,2).
  921. END.
  922. END PROCEDURE. /* GetGroups */
  923. PROCEDURE vpr_RemoveReport:
  924. DEF INPUT PARAM l-RepName AS CHAR NO-UNDO.
  925. FOR EACH VReport WHERE VReport.NAME = l-RepName:
  926. FOR EACH VGroup WHERE VGroup.ReportNum = VReport.Num:
  927. DELETE VGroup.
  928. END.
  929. FOR EACH VObj WHERE VObj.ReportNum = VReport.Num:
  930. DELETE VObj .
  931. END.
  932. FOR EACH VLin WHERE VLin.ReportNum = VReport.Num:
  933. DELETE VLin .
  934. END.
  935. FOR EACH VRec WHERE VRec.ReportNum = VReport.Num:
  936. DELETE VRec .
  937. END.
  938. FOR EACH VImg WHERE VImg.ReportNum = VReport.Num:
  939. DELETE VImg .
  940. END.
  941. FOR EACH VLin WHERE VLin.ReportNum = VReport.Num:
  942. DELETE VLin .
  943. END.
  944. DELETE VReport.
  945. END.
  946. END PROCEDURE.
  947. PROCEDURE vpr_RemoveReportNum:
  948. DEF INPUT PARAM l-RepNum AS INT NO-UNDO.
  949. FOR EACH VReport WHERE VReport.Num = l-RepNum:
  950. FOR EACH VGroup WHERE VGroup.ReportNum = VReport.Num:
  951. DELETE VGroup.
  952. END.
  953. FOR EACH VObj WHERE VObj.ReportNum = VReport.Num:
  954. DELETE VObj .
  955. END.
  956. FOR EACH VLin WHERE VLin.ReportNum = VReport.Num:
  957. DELETE VLin .
  958. END.
  959. FOR EACH VRec WHERE VRec.ReportNum = VReport.Num:
  960. DELETE VRec .
  961. END.
  962. FOR EACH VImg WHERE VImg.ReportNum = VReport.Num:
  963. DELETE VImg .
  964. END.
  965. FOR EACH VLin WHERE VLin.ReportNum = VReport.Num:
  966. DELETE VLin .
  967. END.
  968. DELETE VReport.
  969. END.
  970. END PROCEDURE.
  971. PROCEDURE vpr_SetImgFile:
  972. DEF INPUT PARAM l-imgname AS CHAR NO-UNDO.
  973. DEF INPUT PARAM l-filename AS CHAR NO-UNDO.
  974. FIND FIRST VImg EXCLUSIVE-LOCK
  975. WHERE VImg.ReportNum = VReport.Num
  976. AND VImg.Name = l-imgname
  977. NO-ERROR.
  978. IF NOT AVAIL VImg THEN RETURN ERROR.
  979. ASSIGN
  980. VImg.ImgFile = l-filename.
  981. END PROCEDURE.
  982. /*
  983. * helper to change the linestyles from numbers (funnily used by the designer)
  984. * their string names as used by SetGraphObj
  985. *
  986. * jc, 06.07.05
  987. */
  988. PROCEDURE ip_stylenumber2string:
  989. DEFINE INPUT PARAMETER p-style AS INT NO-UNDO.
  990. DEFINE OUTPUT PARAMETER p-char AS CHAR NO-UNDO.
  991. p-char = "Solid".
  992. CASE p-style :
  993. WHEN 1 THEN
  994. DO:
  995. p-char = "dash".
  996. END.
  997. WHEN 2 THEN
  998. DO:
  999. p-char = "dot".
  1000. END.
  1001. WHEN 3 THEN
  1002. DO:
  1003. p-char = "dashdot".
  1004. END.
  1005. WHEN 4 THEN
  1006. DO:
  1007. p-char = "dashdashdot".
  1008. END.
  1009. END CASE.
  1010. END.
  1011. /** vfl/vfr IO */
  1012. /*
  1013. File: vfr.i /*taken from filerep.p*/
  1014. Author: Klaus Erichsen
  1015. Purpose: Viper Frame Designer - load/save report(s) from/into work tables
  1016. ke, ??????; changed coordination system from pixel to 1/10 of mm. But there may
  1017. reports out which uses old system. So we load the pixel and
  1018. convert them at the end to 1/10 mm
  1019. ke, 981121; added images
  1020. ke, 981121; changed decision to use the old (non mm) values from the x-mm to
  1021. the with-mm. The x-mm could be 0.
  1022. ke, 990417; Now also store reports and work as persistent program
  1023. ke, 990616; Now 16 Fonts allowed
  1024. ke, 04 nov00; Added the storage/load of the version. But is not in use.
  1025. bh, 041116; order and private-data
  1026. Last change: KE 13 Mar 2001 3:38 pm
  1027. Last change: BH 18 Apr 2002 2:21 pm
  1028. */
  1029. /**
  1030. PROCEDURE vpr_LoadVFR IN p-LibraryFile AS CHAR NEW
  1031. PROCEDURE vpr_LoadVFL IN p-ReportFile AS CHAR NEW
  1032. PROCEDURE vpr_SaveVFR IN p-ReportNum AS INT
  1033. IN p-FileName AS CHAR NEW
  1034. PROCEDURE ip-vfrLoadReport IN p-LibraryFile AS CHAR
  1035. */
  1036. /* The version is put in the vfl file to know which version has written
  1037. the file and to maintain compability for newer versions. */
  1038. DEF STREAM s-io.
  1039. PROCEDURE vpr_LoadVFL:
  1040. DEF INPUT PARAM p-LibName AS CHAR NO-UNDO.
  1041. RUN ip-vfrLoadReport (p-libname).
  1042. END PROCEDURE.
  1043. PROCEDURE vpr_LoadVFR:
  1044. DEF INPUT PARAM p-LibName AS CHAR NO-UNDO.
  1045. RUN ip-vfrLoadReport (p-libname).
  1046. END PROCEDURE.
  1047. /** Procedures */
  1048. PROCEDURE ip-vfrLoadReport:
  1049. DEF INPUT PARAM l-LibName AS CHAR NO-UNDO.
  1050. /* Counter for object types. */
  1051. DEF VAR l-RepNum AS INT NO-UNDO.
  1052. DEF VAR lp-Line AS CHAR NO-UNDO.
  1053. DEF VAR lp-Key AS CHAR NO-UNDO.
  1054. DEF VAR lp-Val AS CHAR NO-UNDO.
  1055. DEF VAR lp-Type AS CHAR NO-UNDO.
  1056. DEF VAR lp-equal AS INT NO-UNDO.
  1057. /* Size scope to whole program */
  1058. FOR LAST VReport BY VReport.Num:
  1059. l-repnum = VReport.Num.
  1060. END.
  1061. FIND FIRST VGroup NO-ERROR.
  1062. FIND FIRST VObj NO-ERROR.
  1063. FIND FIRST VRec NO-ERROR.
  1064. FIND FIRST VLin NO-ERROR.
  1065. FIND FIRST VImg NO-ERROR.
  1066. FIND FIRST VflSetup.
  1067. VflSetup.Version = "100".
  1068. /* Open Stream to Report-Library. */
  1069. FILE-INFO:FILE-NAME = l-LibName.
  1070. INPUT STREAM s-io FROM VALUE(FILE-INFO:FULL-PATHNAME).
  1071. READ-LINE: REPEAT:
  1072. /* Eine Zeile lesen. */
  1073. IMPORT STREAM s-io UNFORMATTED lp-Line.
  1074. lp-line = TRIM(lp-Line).
  1075. /* Skip unusable lines. */
  1076. IF lp-Line BEGINS ";" THEN NEXT READ-LINE.
  1077. lp-equal = INDEX(lp-Line, "=").
  1078. IF lp-equal = 0 THEN NEXT READ-LINE.
  1079. /* Get key and value. */
  1080. ASSIGN
  1081. lp-key = ENTRY(1, lp-Line, "=")
  1082. lp-Val = SUBSTR(lp-Line, lp-equal + 1).
  1083. /* When a new object begins, create an worktable record to hold it. */
  1084. IF lp-Key = "BeginObject" THEN
  1085. CASE lp-Val:
  1086. /* Settings which may be used to make old reports compatible. */
  1087. WHEN "Setup" THEN
  1088. DO:
  1089. lp-Type = "Setup".
  1090. END.
  1091. WHEN "Report" THEN
  1092. DO:
  1093. CREATE VReport.
  1094. /* The report number must be unique. So we use an variable. */
  1095. ASSIGN
  1096. l-RepNum = l-RepNum + 1
  1097. VReport.Num = l-RepNum
  1098. VReport.ActNum = 1
  1099. lp-Type = "Report".
  1100. END.
  1101. WHEN "Group" THEN
  1102. DO:
  1103. CREATE VGroup.
  1104. ASSIGN
  1105. VReport.ActNum = VReport.ActNum + 1
  1106. VGroup.Num = VReport.ActNum
  1107. VGroup.ReportNum = VReport.Num
  1108. lp-Type = "Group".
  1109. END. /* of when group */
  1110. WHEN "Cell" THEN
  1111. DO:
  1112. CREATE VObj.
  1113. ASSIGN
  1114. VReport.ActNum = VReport.ActNum + 1
  1115. VObj.Num = VReport.ActNum
  1116. VObj.Type = "Cell"
  1117. VObj.ReportNum = VReport.Num
  1118. VObj.GroupNum = VGroup.Num
  1119. lp-Type = "Cell".
  1120. END. /* when cell */
  1121. WHEN "Text" THEN
  1122. DO:
  1123. CREATE VObj.
  1124. ASSIGN
  1125. VReport.ActNum = VReport.ActNum + 1
  1126. VObj.Num = VReport.ActNum
  1127. VObj.Type = "Text"
  1128. VObj.ReportNum = VReport.Num
  1129. VObj.GroupNum = VGroup.Num
  1130. lp-Type = "Text".
  1131. END. /* when cell */
  1132. WHEN "Rectangle" THEN
  1133. DO:
  1134. CREATE VRec.
  1135. ASSIGN
  1136. VReport.ActNum = VReport.ActNum + 1
  1137. VRec.Num = VReport.ActNum
  1138. VRec.ReportNum = VReport.Num
  1139. VRec.GroupNum = IF AVAILABLE VGroup THEN VGroup.Num ELSE 0
  1140. lp-Type = "Rectangle".
  1141. END. /* of rectangle */
  1142. WHEN "Line" THEN
  1143. DO:
  1144. CREATE VLin.
  1145. ASSIGN
  1146. VReport.ActNum = VReport.ActNum + 1
  1147. VLin.Num = VReport.ActNum
  1148. VLin.ReportNum = VReport.Num
  1149. VLin.GroupNum = IF AVAILABLE VGroup THEN VGroup.Num ELSE 0
  1150. lp-Type = "Line".
  1151. END.
  1152. WHEN "Image" THEN
  1153. DO:
  1154. CREATE VImg.
  1155. ASSIGN
  1156. VReport.ActNum = VReport.ActNum + 1
  1157. VImg.Num = VReport.ActNum
  1158. VImg.ReportNum = VReport.Num
  1159. VImg.GroupNum = IF AVAILABLE VGroup THEN VGroup.Num ELSE 0
  1160. lp-Type = "Image".
  1161. END.
  1162. OTHERWISE
  1163. DO:
  1164. MESSAGE "Objecttype: " lp-Val " unknown!".
  1165. END.
  1166. END. /* of begin object */
  1167. /* If the object is complete, store it. */
  1168. ELSE IF lp-Key = "EndObject" THEN
  1169. DO:
  1170. CASE lp-val:
  1171. WHEN "Setup" THEN.
  1172. WHEN "Report" THEN. /* Do nothing special. */
  1173. WHEN "Group" THEN
  1174. DO:
  1175. RELEASE VGroup.
  1176. END.
  1177. WHEN "Cell" THEN
  1178. DO:
  1179. /* Create the 1/10 mm values for compability to older saved reports.
  1180. Hint: the width must be greater then 0. */
  1181. IF VObj.Width-mm = 0 THEN ASSIGN
  1182. VObj.x-mm = VObj.x * 2.54
  1183. VObj.y-mm = VObj.y * 2.54
  1184. VObj.Width-mm = VObj.Width * 2.54
  1185. VObj.Height-mm = VObj.Height * 2.54.
  1186. END. /* of cell */
  1187. WHEN "Text" THEN
  1188. DO:
  1189. /* Create the 1/10 mm values for compability to older saved reports.
  1190. Hint: every position must be greater then 0. */
  1191. IF VObj.Width-mm = 0 THEN ASSIGN
  1192. VObj.x-mm = VObj.x * 2.54
  1193. VObj.y-mm = VObj.y * 2.54
  1194. VObj.Width-mm = VObj.Width * 2.54
  1195. VObj.Height-mm = VObj.Height * 2.54.
  1196. END. /* of cell */
  1197. WHEN "Rectangle" THEN
  1198. DO:
  1199. IF VRec.Width-mm = 0 THEN ASSIGN /* compability */
  1200. VRec.x-mm = VRec.x * 2.54
  1201. VRec.y-mm = VRec.y * 2.54
  1202. VRec.Width-mm = VRec.Width * 2.54
  1203. VRec.Height-mm = VRec.Height * 2.54.
  1204. END. /* rectangle */
  1205. WHEN "Line" THEN
  1206. DO:
  1207. END.
  1208. WHEN "Image" THEN
  1209. DO:
  1210. END.
  1211. END CASE.
  1212. lp-Type = "".
  1213. END. /* of endobject */
  1214. /* Go through the object types. */
  1215. ELSE
  1216. CASE lp-Type:
  1217. /* Load attributes for the vfl setup. */
  1218. WHEN "Setup" THEN
  1219. CASE lp-Key:
  1220. WHEN "Version" THEN
  1221. DO:
  1222. FIND FIRST VflSetup.
  1223. VflSetup.Version = lp-Val.
  1224. /* MESSAGE VflSetup.Version. */
  1225. END.
  1226. END.
  1227. /* Load attributes for a Report. */
  1228. WHEN "Report" THEN
  1229. CASE lp-Key:
  1230. WHEN "Name" THEN
  1231. VReport.Name = lp-Val.
  1232. WHEN "Font1" THEN
  1233. VReport.FontNam[1] = lp-Val.
  1234. WHEN "Font2" THEN
  1235. VReport.FontNam[2] = lp-Val.
  1236. WHEN "Font3" THEN
  1237. VReport.FontNam[3] = lp-Val.
  1238. WHEN "Font4" THEN
  1239. VReport.FontNam[4] = lp-Val.
  1240. WHEN "Font5" THEN
  1241. VReport.FontNam[5] = lp-Val.
  1242. WHEN "Font6" THEN
  1243. VReport.FontNam[6] = lp-Val.
  1244. WHEN "Font7" THEN
  1245. VReport.FontNam[7] = lp-Val.
  1246. WHEN "Font8" THEN
  1247. VReport.FontNam[8] = lp-Val.
  1248. WHEN "Font9" THEN
  1249. VReport.FontNam[9] = lp-Val.
  1250. WHEN "Font10" THEN
  1251. VReport.FontNam[10] = lp-Val.
  1252. WHEN "Font11" THEN
  1253. VReport.FontNam[11] = lp-Val.
  1254. WHEN "Font12" THEN
  1255. VReport.FontNam[12] = lp-Val.
  1256. WHEN "Font13" THEN
  1257. VReport.FontNam[13] = lp-Val.
  1258. WHEN "Font14" THEN
  1259. VReport.FontNam[14] = lp-Val.
  1260. WHEN "Font15" THEN
  1261. VReport.FontNam[15] = lp-Val.
  1262. WHEN "Font16" THEN
  1263. VReport.FontNam[16] = lp-Val.
  1264. WHEN "GridWidth" THEN
  1265. VReport.GridWidth = INT(lp-Val).
  1266. WHEN "GridHeight" THEN
  1267. VReport.GridHeight = INT(lp-Val).
  1268. WHEN "GridVertical" THEN
  1269. VReport.GridVertical = INT(lp-Val).
  1270. WHEN "GridHorizontal" THEN
  1271. VReport.GridHorizontal = INT(lp-Val).
  1272. WHEN "Width-mm" THEN
  1273. VReport.Width-mm = INT(lp-Val).
  1274. WHEN "Height-mm" THEN
  1275. VReport.Height-mm = INT(lp-Val).
  1276. WHEN "Portrait" THEN
  1277. VReport.Portrait = (lp-Val = "yes").
  1278. WHEN "Private-Data" THEN
  1279. VReport.Private-Data = lp-Val.
  1280. WHEN "Order" THEN
  1281. VReport.Order = INT(lp-Val).
  1282. WHEN "Rem"
  1283. THEN
  1284. VReport.Rem = REPLACE(lp-Val, CHR(1), CHR(10)).
  1285. WHEN "PaperType" THEN
  1286. VReport.PaperType = lp-Val.
  1287. END. /* of when report */
  1288. /* Load attributes for an group. */
  1289. WHEN "Group" THEN
  1290. CASE lp-Key:
  1291. WHEN "Name" THEN
  1292. VGroup.Name = lp-Val.
  1293. WHEN "PreSkip" THEN
  1294. VGroup.PreSkip = INT(lp-Val).
  1295. WHEN "PostSkip" THEN
  1296. VGroup.PostSkip = INT(lp-Val).
  1297. WHEN "Unit" THEN
  1298. VGroup.Unit = lp-Val.
  1299. WHEN "RelPos" THEN
  1300. VGroup.RelPos = (lp-Val = "yes").
  1301. WHEN "Private-Data" THEN
  1302. VGroup.Private-Data = lp-Val.
  1303. WHEN "Order" THEN
  1304. VGroup.Order = INT(lp-Val).
  1305. END. /* of when group */
  1306. /* Load attributes for an cell. */
  1307. WHEN "Cell" THEN
  1308. CASE lp-Key:
  1309. WHEN "Name" THEN
  1310. VObj.Name = lp-Val.
  1311. WHEN "TextValue" THEN
  1312. VObj.TextValue = lp-Val.
  1313. WHEN "Alignment" THEN
  1314. VObj.Align = lp-Val.
  1315. WHEN "AutoWrap" THEN
  1316. VObj.Autowrap = lp-val.
  1317. WHEN "RTFAllow" THEN
  1318. VObj.RTFAllow = (lp-Val = "yes").
  1319. WHEN "AutoResize" THEN
  1320. VObj.AutoResize = (lp-Val = "yes").
  1321. WHEN "FgColour" THEN
  1322. VObj.FgColour = lp-Val.
  1323. WHEN "BgColour" THEN
  1324. VObj.BgColour = lp-Val.
  1325. WHEN "FontNo" THEN
  1326. VObj.FontNo = INT(lp-Val).
  1327. WHEN "X" THEN
  1328. VObj.x = INT(lp-Val). /* compatibility */
  1329. WHEN "Y" THEN
  1330. VObj.y = INT(lp-Val).
  1331. WHEN "Width" THEN
  1332. VObj.Width = INT(lp-Val).
  1333. WHEN "Height" THEN
  1334. VObj.Height = INT(lp-Val).
  1335. WHEN "X-mm" THEN
  1336. VObj.x-mm = INT(lp-Val).
  1337. WHEN "Y-mm" THEN
  1338. VObj.y-mm = INT(lp-Val).
  1339. WHEN "Width-mm" THEN
  1340. VObj.Width-mm = INT(lp-Val).
  1341. WHEN "Height-mm" THEN
  1342. VObj.Height-mm = INT(lp-Val).
  1343. WHEN "Private-Data" THEN
  1344. VObj.Private-Data = lp-Val.
  1345. WHEN "Order" THEN
  1346. VObj.Order = INT(lp-Val).
  1347. WHEN "zOrder" THEN
  1348. VObj.zOrder = INT(lp-Val).
  1349. WHEN "KeepText" THEN
  1350. VObj.KeepText = (lp-Val = "yes").
  1351. END. /* of when cell */
  1352. /* Load attributes for an text. */
  1353. WHEN "Text" THEN
  1354. CASE lp-Key:
  1355. WHEN "Name" THEN
  1356. VObj.Name = lp-Val.
  1357. WHEN "TextValue"
  1358. THEN
  1359. VObj.TextValue = REPLACE(lp-Val, CHR(1), CHR(10)).
  1360. WHEN "Alignment" THEN
  1361. VObj.Align = lp-Val.
  1362. WHEN "AutoWrap" THEN
  1363. VObj.Autowrap = lp-Val.
  1364. WHEN "RTFAllow" THEN
  1365. VObj.RTFAllow = (lp-Val = "yes").
  1366. WHEN "AutoResize" THEN
  1367. VObj.AutoResize = (lp-Val = "yes").
  1368. WHEN "FgColour" THEN
  1369. VObj.FgColour = lp-Val.
  1370. WHEN "BgColour" THEN
  1371. VObj.BgColour = lp-Val.
  1372. WHEN "FontNo" THEN
  1373. VObj.FontNo = INT(lp-Val).
  1374. WHEN "X" THEN
  1375. VObj.x = INT(lp-Val). /* compatibility */
  1376. WHEN "Y" THEN
  1377. VObj.y = INT(lp-Val).
  1378. WHEN "Width" THEN
  1379. VObj.Width = INT(lp-Val).
  1380. WHEN "Height" THEN
  1381. VObj.Height = INT(lp-Val).
  1382. WHEN "X-mm" THEN
  1383. VObj.x-mm = INT(lp-Val).
  1384. WHEN "Y-mm" THEN
  1385. VObj.y-mm = INT(lp-Val).
  1386. WHEN "Width-mm" THEN
  1387. VObj.Width-mm = INT(lp-Val).
  1388. WHEN "Height-mm" THEN
  1389. VObj.Height-mm = INT(lp-Val).
  1390. WHEN "Private-Data" THEN
  1391. VObj.Private-Data = lp-Val.
  1392. WHEN "Order" THEN
  1393. VObj.Order = INT(lp-Val).
  1394. WHEN "zOrder" THEN
  1395. VObj.zOrder = INT(lp-Val).
  1396. WHEN "KeepText" THEN
  1397. VObj.KeepText = (lp-Val = "yes").
  1398. END. /* of when text */
  1399. /* Rectangle attributes. */
  1400. WHEN "Rectangle" THEN
  1401. CASE lp-Key:
  1402. WHEN "Name" THEN
  1403. VRec.Name = lp-Val.
  1404. WHEN "Rounded" THEN
  1405. VRec.Rounded = (lp-Val = "yes").
  1406. WHEN "Filled" THEN
  1407. VRec.Filled = (lp-Val = "yes").
  1408. WHEN "EdgePixels" THEN
  1409. VRec.EdgePix = INT(lp-Val).
  1410. WHEN "BgColour" THEN
  1411. VRec.BgColour = lp-Val.
  1412. WHEN "X" THEN
  1413. VRec.x = INT(lp-Val). /* compatibility */
  1414. WHEN "Y" THEN
  1415. VRec.y = INT(lp-Val).
  1416. WHEN "Width" THEN
  1417. VRec.Width = INT(lp-Val).
  1418. WHEN "Height" THEN
  1419. VRec.Height = INT(lp-Val).
  1420. WHEN "X-mm" THEN
  1421. VRec.x-mm = INT(lp-Val).
  1422. WHEN "Y-mm" THEN
  1423. VRec.y-mm = INT(lp-Val).
  1424. WHEN "Width-mm" THEN
  1425. VRec.Width-mm = INT(lp-Val).
  1426. WHEN "Height-mm" THEN
  1427. VRec.Height-mm = INT(lp-Val).
  1428. WHEN "Private-Data" THEN
  1429. VRec.Private-Data = lp-Val.
  1430. WHEN "Order" THEN
  1431. VRec.Order = INT(lp-Val).
  1432. WHEN "zOrder" THEN
  1433. VRec.zOrder = INT(lp-Val).
  1434. END. /* of when rectangle */
  1435. /* Line attributes. */
  1436. WHEN "Line" THEN
  1437. CASE lp-Key:
  1438. WHEN "Name" THEN
  1439. VLin.Name = lp-Val.
  1440. WHEN "Type" THEN
  1441. VLin.Type = lp-Val.
  1442. WHEN "Style" THEN
  1443. VLin.Style = INT(lp-Val).
  1444. WHEN "X-mm" THEN
  1445. VLin.x-mm = INT(lp-Val).
  1446. WHEN "Y-mm" THEN
  1447. VLin.y-mm = INT(lp-Val).
  1448. WHEN "Len-mm" THEN
  1449. VLin.Len-mm = INT(lp-Val).
  1450. WHEN "Height-mm" THEN
  1451. VLin.Height-mm = INT(lp-Val).
  1452. WHEN "BgColour" THEN
  1453. VLin.BgColour = lp-Val.
  1454. WHEN "Private-Data" THEN
  1455. VLin.Private-Data = lp-Val.
  1456. WHEN "Order" THEN
  1457. VLin.Order = INT(lp-Val).
  1458. WHEN "zOrder" THEN
  1459. VLin.zOrder = INT(lp-Val).
  1460. END. /* of when line */
  1461. /* Image attributes. */
  1462. WHEN "Image" THEN
  1463. CASE lp-Key:
  1464. WHEN "Name" THEN
  1465. VImg.Name = lp-Val.
  1466. WHEN "Adjust" THEN
  1467. VImg.Adjust = (lp-Val = "yes").
  1468. WHEN "Ratio" THEN
  1469. VImg.Ratio = (lp-Val = "yes").
  1470. WHEN "ImgType" THEN
  1471. VImg.ImgType = lp-Val.
  1472. WHEN "ImgFile" THEN
  1473. VImg.ImgFile = lp-Val.
  1474. WHEN "X-mm" THEN
  1475. VImg.x-mm = INT(lp-Val).
  1476. WHEN "Y-mm" THEN
  1477. VImg.y-mm = INT(lp-Val).
  1478. WHEN "Width-mm" THEN
  1479. VImg.Width-mm = INT(lp-Val).
  1480. WHEN "Height-mm" THEN
  1481. VImg.Height-mm = INT(lp-Val).
  1482. WHEN "Private-Data" THEN
  1483. VImg.Private-Data = lp-Val.
  1484. WHEN "Order" THEN
  1485. VImg.Order = INT(lp-Val).
  1486. WHEN "zOrder" THEN
  1487. VImg.zOrder = INT(lp-Val).
  1488. END. /* of when image */
  1489. END. /* case lp-type */
  1490. END. /* of read-line */
  1491. INPUT STREAM s-io CLOSE.
  1492. END PROCEDURE. /* ip-loadreports */
  1493. /* Save all reports. */
  1494. PROCEDURE vpr_SaveVFR:
  1495. DEF INPUT PARAM l-RepNum AS INT NO-UNDO.
  1496. DEF INPUT PARAM l-LibName AS CHAR NO-UNDO.
  1497. DEF VAR ii AS INT NO-UNDO.
  1498. /* Define Buffer to know the default values. */
  1499. DEF BUFFER b-VReport FOR TEMP-TABLE VReport.
  1500. CREATE b-VReport.
  1501. b-VReport.ActNum = -1. /* Hide this to safe */
  1502. DEF BUFFER b-VGroup FOR TEMP-TABLE VGroup.
  1503. CREATE b-VGroup.
  1504. DEF BUFFER b-VObj FOR TEMP-TABLE VObj.
  1505. CREATE b-VObj.
  1506. /* DEF BUFFER b-VLin FOR VLin.
  1507. CREATE b-VLin.
  1508. DEF BUFFER b-VRec FOR VRec.
  1509. CREATE b-VRec.
  1510. DEF BUFFER b-VImg FOR VImg.
  1511. CREATE b-VImg.
  1512. */
  1513. DEF VAR lp-fileName AS CHAR NO-UNDO.
  1514. /* Check if lib exist, then make backup. */
  1515. FILE-INFO:FILE-NAME = l-LibName.
  1516. IF FILE-INFO:FULL-PATHNAME <> ? THEN
  1517. DO:
  1518. lp-fileName = FILE-INFO:FULL-PATHNAME.
  1519. lp-fileName = SUBSTRING(lp-FileName, 1 , R-INDEX(lp-FileName, ".")).
  1520. OS-RENAME VALUE( FILE-INFO:FULL-PATHNAME ) VALUE( lp-FileName + "bak" ).
  1521. END. /* of lib avail */
  1522. /* Open Stream to Report-Library. */
  1523. OUTPUT STREAM s-io TO VALUE(l-LibName).
  1524. /* Global information. */
  1525. PUT STREAM s-io UNFORMATTED
  1526. SKIP
  1527. ";This file is generated by Viper Designer"
  1528. SKIP
  1529. ";Document Version 202"
  1530. SKIP
  1531. ";Program authors: lb, bh, jc, ke, IAP GmbH, Moerkenstr. 9, 22767 Hamburg, Germany"
  1532. SKIP
  1533. ";Info and updates at: http://tools4progress.com or http://www.iap.de"
  1534. SKIP
  1535. ";Or telephone: +49 + 40 - 30 68 03 - 0"
  1536. SKIP(1) ";It is possible (and sometimes useful) to change something in this file,"
  1537. SKIP
  1538. ";but be carefull (and clever) and make a backup copy before."
  1539. SKIP(1) ";And, by the way: Lines beginning with an ';' will be ignored ;-)"
  1540. .
  1541. /* Put version information in file. */
  1542. PUT STREAM s-io UNFORMATTED
  1543. SKIP(2) "BeginObject=Setup"
  1544. SKIP
  1545. " Version=202"
  1546. SKIP
  1547. "EndObject=Setup"
  1548. .
  1549. /* Save report header. */
  1550. FOR EACH VReport WHERE VReport.Num = l-RepNum
  1551. AND VReport.ActNum > 0:
  1552. PUT STREAM s-io UNFORMATTED
  1553. SKIP (2)
  1554. SKIP
  1555. "BeginObject=Report"
  1556. SKIP
  1557. " Name=" VReport.NAME.
  1558. /* SKIP " ActNum=" VReport.ActNum */
  1559. DO ii = 1 TO 16:
  1560. IF b-VReport.FontNam[ii] <> VReport.FontNam[ii] THEN
  1561. PUT STREAM s-io UNFORMATTED
  1562. SKIP " Font" ii "=" VReport.FontNam[ii].
  1563. END.
  1564. /* remarks to the report. Could not be done from savend.i */.
  1565. IF b-VReport.Rem <> VReport.Rem THEN
  1566. PUT STREAM s-io UNFORMATTED
  1567. SKIP " Rem=" REPLACE(VReport.Rem, CHR(10), CHR(1)).
  1568. /*
  1569. File: savend.i
  1570. (Save no default values).
  1571. Author: Klaus Erichsen
  1572. Parameter: {1}: Buffer name
  1573. {2}: Field name
  1574. {3}: Attribute text
  1575. Example of command:
  1576. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1577. PUT STREAM s-io UNFORMATTED
  1578. SKIP " GridWidth=" VReport.GridWidth.
  1579. Last change: KE 19 Aug 2000 4:16 pm
  1580. */
  1581. IF b-VReport.GridWidth <>
  1582. VReport.GridWidth THEN
  1583. PUT STREAM s-io UNFORMATTED
  1584. SKIP ' GridWidth='
  1585. VReport.GridWidth.
  1586. /*
  1587. File: savend.i
  1588. (Save no default values).
  1589. Author: Klaus Erichsen
  1590. Parameter: {1}: Buffer name
  1591. {2}: Field name
  1592. {3}: Attribute text
  1593. Example of command:
  1594. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1595. PUT STREAM s-io UNFORMATTED
  1596. SKIP " GridWidth=" VReport.GridWidth.
  1597. Last change: KE 19 Aug 2000 4:16 pm
  1598. */
  1599. IF b-VReport.GridHeight <>
  1600. VReport.GridHeight THEN
  1601. PUT STREAM s-io UNFORMATTED
  1602. SKIP ' GridHeight='
  1603. VReport.GridHeight.
  1604. /*
  1605. File: savend.i
  1606. (Save no default values).
  1607. Author: Klaus Erichsen
  1608. Parameter: {1}: Buffer name
  1609. {2}: Field name
  1610. {3}: Attribute text
  1611. Example of command:
  1612. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1613. PUT STREAM s-io UNFORMATTED
  1614. SKIP " GridWidth=" VReport.GridWidth.
  1615. Last change: KE 19 Aug 2000 4:16 pm
  1616. */
  1617. IF b-VReport.GridVertical <>
  1618. VReport.GridVertical THEN
  1619. PUT STREAM s-io UNFORMATTED
  1620. SKIP ' GridVertical='
  1621. VReport.GridVertical.
  1622. /*
  1623. File: savend.i
  1624. (Save no default values).
  1625. Author: Klaus Erichsen
  1626. Parameter: {1}: Buffer name
  1627. {2}: Field name
  1628. {3}: Attribute text
  1629. Example of command:
  1630. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1631. PUT STREAM s-io UNFORMATTED
  1632. SKIP " GridWidth=" VReport.GridWidth.
  1633. Last change: KE 19 Aug 2000 4:16 pm
  1634. */
  1635. IF b-VReport.GridHorizontal <>
  1636. VReport.GridHorizontal THEN
  1637. PUT STREAM s-io UNFORMATTED
  1638. SKIP ' GridHorizontal='
  1639. VReport.GridHorizontal.
  1640. /*
  1641. File: savend.i
  1642. (Save no default values).
  1643. Author: Klaus Erichsen
  1644. Parameter: {1}: Buffer name
  1645. {2}: Field name
  1646. {3}: Attribute text
  1647. Example of command:
  1648. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1649. PUT STREAM s-io UNFORMATTED
  1650. SKIP " GridWidth=" VReport.GridWidth.
  1651. Last change: KE 19 Aug 2000 4:16 pm
  1652. */
  1653. IF b-VReport.Width-mm <>
  1654. VReport.Width-mm THEN
  1655. PUT STREAM s-io UNFORMATTED
  1656. SKIP ' Width-mm='
  1657. VReport.Width-mm.
  1658. /*
  1659. File: savend.i
  1660. (Save no default values).
  1661. Author: Klaus Erichsen
  1662. Parameter: {1}: Buffer name
  1663. {2}: Field name
  1664. {3}: Attribute text
  1665. Example of command:
  1666. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1667. PUT STREAM s-io UNFORMATTED
  1668. SKIP " GridWidth=" VReport.GridWidth.
  1669. Last change: KE 19 Aug 2000 4:16 pm
  1670. */
  1671. IF b-VReport.Height-mm <>
  1672. VReport.Height-mm THEN
  1673. PUT STREAM s-io UNFORMATTED
  1674. SKIP ' Height-mm='
  1675. VReport.Height-mm.
  1676. /*
  1677. File: savend.i
  1678. (Save no default values).
  1679. Author: Klaus Erichsen
  1680. Parameter: {1}: Buffer name
  1681. {2}: Field name
  1682. {3}: Attribute text
  1683. Example of command:
  1684. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1685. PUT STREAM s-io UNFORMATTED
  1686. SKIP " GridWidth=" VReport.GridWidth.
  1687. Last change: KE 19 Aug 2000 4:16 pm
  1688. */
  1689. IF b-VReport.Portrait <>
  1690. VReport.Portrait THEN
  1691. PUT STREAM s-io UNFORMATTED
  1692. SKIP ' Portrait='
  1693. VReport.Portrait.
  1694. /*
  1695. File: savend.i
  1696. (Save no default values).
  1697. Author: Klaus Erichsen
  1698. Parameter: {1}: Buffer name
  1699. {2}: Field name
  1700. {3}: Attribute text
  1701. Example of command:
  1702. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1703. PUT STREAM s-io UNFORMATTED
  1704. SKIP " GridWidth=" VReport.GridWidth.
  1705. Last change: KE 19 Aug 2000 4:16 pm
  1706. */
  1707. IF b-VReport.Private-Data <>
  1708. VReport.Private-Data THEN
  1709. PUT STREAM s-io UNFORMATTED
  1710. SKIP ' Private-Data='
  1711. VReport.Private-Data.
  1712. /*
  1713. File: savend.i
  1714. (Save no default values).
  1715. Author: Klaus Erichsen
  1716. Parameter: {1}: Buffer name
  1717. {2}: Field name
  1718. {3}: Attribute text
  1719. Example of command:
  1720. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1721. PUT STREAM s-io UNFORMATTED
  1722. SKIP " GridWidth=" VReport.GridWidth.
  1723. Last change: KE 19 Aug 2000 4:16 pm
  1724. */
  1725. IF b-VReport.Order <>
  1726. VReport.Order THEN
  1727. PUT STREAM s-io UNFORMATTED
  1728. SKIP ' Order='
  1729. VReport.Order.
  1730. /*
  1731. File: savend.i
  1732. (Save no default values).
  1733. Author: Klaus Erichsen
  1734. Parameter: {1}: Buffer name
  1735. {2}: Field name
  1736. {3}: Attribute text
  1737. Example of command:
  1738. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1739. PUT STREAM s-io UNFORMATTED
  1740. SKIP " GridWidth=" VReport.GridWidth.
  1741. Last change: KE 19 Aug 2000 4:16 pm
  1742. */
  1743. IF b-VReport.PaperType <>
  1744. VReport.PaperType THEN
  1745. PUT STREAM s-io UNFORMATTED
  1746. SKIP ' PaperType='
  1747. VReport.PaperType.
  1748. /* Save groups of report. */
  1749. FOR EACH VGroup WHERE VGroup.ReportNum = VReport.Num:
  1750. PUT STREAM s-io UNFORMATTED
  1751. SKIP(1) " BeginObject=Group"
  1752. SKIP
  1753. " Name=" VGroup.NAME.
  1754. /*
  1755. File: savend.i
  1756. (Save no default values).
  1757. Author: Klaus Erichsen
  1758. Parameter: {1}: Buffer name
  1759. {2}: Field name
  1760. {3}: Attribute text
  1761. Example of command:
  1762. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1763. PUT STREAM s-io UNFORMATTED
  1764. SKIP " GridWidth=" VReport.GridWidth.
  1765. Last change: KE 19 Aug 2000 4:16 pm
  1766. */
  1767. IF b-VGroup.PreSkip <>
  1768. VGroup.PreSkip THEN
  1769. PUT STREAM s-io UNFORMATTED
  1770. SKIP ' PreSkip='
  1771. VGroup.PreSkip.
  1772. /*
  1773. File: savend.i
  1774. (Save no default values).
  1775. Author: Klaus Erichsen
  1776. Parameter: {1}: Buffer name
  1777. {2}: Field name
  1778. {3}: Attribute text
  1779. Example of command:
  1780. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1781. PUT STREAM s-io UNFORMATTED
  1782. SKIP " GridWidth=" VReport.GridWidth.
  1783. Last change: KE 19 Aug 2000 4:16 pm
  1784. */
  1785. IF b-VGroup.PostSkip <>
  1786. VGroup.PostSkip THEN
  1787. PUT STREAM s-io UNFORMATTED
  1788. SKIP ' PostSkip='
  1789. VGroup.PostSkip.
  1790. /*
  1791. File: savend.i
  1792. (Save no default values).
  1793. Author: Klaus Erichsen
  1794. Parameter: {1}: Buffer name
  1795. {2}: Field name
  1796. {3}: Attribute text
  1797. Example of command:
  1798. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1799. PUT STREAM s-io UNFORMATTED
  1800. SKIP " GridWidth=" VReport.GridWidth.
  1801. Last change: KE 19 Aug 2000 4:16 pm
  1802. */
  1803. IF b-VGroup.Unit <>
  1804. VGroup.Unit THEN
  1805. PUT STREAM s-io UNFORMATTED
  1806. SKIP ' Unit='
  1807. VGroup.Unit.
  1808. /*
  1809. File: savend.i
  1810. (Save no default values).
  1811. Author: Klaus Erichsen
  1812. Parameter: {1}: Buffer name
  1813. {2}: Field name
  1814. {3}: Attribute text
  1815. Example of command:
  1816. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1817. PUT STREAM s-io UNFORMATTED
  1818. SKIP " GridWidth=" VReport.GridWidth.
  1819. Last change: KE 19 Aug 2000 4:16 pm
  1820. */
  1821. IF b-VGroup.RelPos <>
  1822. VGroup.RelPos THEN
  1823. PUT STREAM s-io UNFORMATTED
  1824. SKIP ' RelPos='
  1825. VGroup.RelPos.
  1826. /*
  1827. File: savend.i
  1828. (Save no default values).
  1829. Author: Klaus Erichsen
  1830. Parameter: {1}: Buffer name
  1831. {2}: Field name
  1832. {3}: Attribute text
  1833. Example of command:
  1834. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1835. PUT STREAM s-io UNFORMATTED
  1836. SKIP " GridWidth=" VReport.GridWidth.
  1837. Last change: KE 19 Aug 2000 4:16 pm
  1838. */
  1839. IF b-VGroup.Private-Data <>
  1840. VGroup.Private-Data THEN
  1841. PUT STREAM s-io UNFORMATTED
  1842. SKIP ' Private-Data='
  1843. VGroup.Private-Data.
  1844. /*
  1845. File: savend.i
  1846. (Save no default values).
  1847. Author: Klaus Erichsen
  1848. Parameter: {1}: Buffer name
  1849. {2}: Field name
  1850. {3}: Attribute text
  1851. Example of command:
  1852. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1853. PUT STREAM s-io UNFORMATTED
  1854. SKIP " GridWidth=" VReport.GridWidth.
  1855. Last change: KE 19 Aug 2000 4:16 pm
  1856. */
  1857. IF b-VGroup.Order <>
  1858. VGroup.Order THEN
  1859. PUT STREAM s-io UNFORMATTED
  1860. SKIP ' Order='
  1861. VGroup.Order.
  1862. /* Save cell objects of group. */
  1863. FOR EACH VObj WHERE VObj.ReportNum = VReport.Num
  1864. AND VObj.GroupNum = VGroup.Num:
  1865. /* The Text from the TextValue could have more than one line.
  1866. So convert the LFs int the string to hx002 */
  1867. PUT STREAM s-io UNFORMATTED
  1868. SKIP(1) IF VObj.Type = "Cell" THEN " BeginObject=Cell"
  1869. ELSE " BeginObject=Text"
  1870. SKIP
  1871. " Name=" VObj.Name
  1872. /* Save measures as 1/10 mm now. */
  1873. SKIP
  1874. " X-mm=" VObj.x-mm
  1875. SKIP
  1876. " Y-mm=" VObj.y-mm
  1877. SKIP
  1878. " Width-mm=" VObj.Width-mm
  1879. SKIP
  1880. " Height-mm=" VObj.Height-mm
  1881. .
  1882. IF b-VObj.TextValue <> VObj.TextValue THEN
  1883. PUT STREAM s-io UNFORMATTED
  1884. SKIP " TextValue=" REPLACE(VObj.TextValue, CHR(10), CHR(1)).
  1885. /* To get old saved values to default */
  1886. IF VObj.Align = "" THEN VObj.Align = "Left".
  1887. IF VObj.Autowrap = "" THEN VObj.Autowrap = "FALSE".
  1888. /*
  1889. File: savend.i
  1890. (Save no default values).
  1891. Author: Klaus Erichsen
  1892. Parameter: {1}: Buffer name
  1893. {2}: Field name
  1894. {3}: Attribute text
  1895. Example of command:
  1896. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1897. PUT STREAM s-io UNFORMATTED
  1898. SKIP " GridWidth=" VReport.GridWidth.
  1899. Last change: KE 19 Aug 2000 4:16 pm
  1900. */
  1901. IF b-VObj.Align <>
  1902. VObj.Align THEN
  1903. PUT STREAM s-io UNFORMATTED
  1904. SKIP ' Alignment='
  1905. VObj.Align.
  1906. /*
  1907. File: savend.i
  1908. (Save no default values).
  1909. Author: Klaus Erichsen
  1910. Parameter: {1}: Buffer name
  1911. {2}: Field name
  1912. {3}: Attribute text
  1913. Example of command:
  1914. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1915. PUT STREAM s-io UNFORMATTED
  1916. SKIP " GridWidth=" VReport.GridWidth.
  1917. Last change: KE 19 Aug 2000 4:16 pm
  1918. */
  1919. IF b-VObj.Autowrap <>
  1920. VObj.Autowrap THEN
  1921. PUT STREAM s-io UNFORMATTED
  1922. SKIP ' Autowrap='
  1923. VObj.Autowrap.
  1924. /*
  1925. File: savend.i
  1926. (Save no default values).
  1927. Author: Klaus Erichsen
  1928. Parameter: {1}: Buffer name
  1929. {2}: Field name
  1930. {3}: Attribute text
  1931. Example of command:
  1932. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1933. PUT STREAM s-io UNFORMATTED
  1934. SKIP " GridWidth=" VReport.GridWidth.
  1935. Last change: KE 19 Aug 2000 4:16 pm
  1936. */
  1937. IF b-VObj.RTFAllow <>
  1938. VObj.RTFAllow THEN
  1939. PUT STREAM s-io UNFORMATTED
  1940. SKIP ' RTFAllow='
  1941. VObj.RTFAllow.
  1942. /*
  1943. File: savend.i
  1944. (Save no default values).
  1945. Author: Klaus Erichsen
  1946. Parameter: {1}: Buffer name
  1947. {2}: Field name
  1948. {3}: Attribute text
  1949. Example of command:
  1950. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1951. PUT STREAM s-io UNFORMATTED
  1952. SKIP " GridWidth=" VReport.GridWidth.
  1953. Last change: KE 19 Aug 2000 4:16 pm
  1954. */
  1955. IF b-VObj.AutoResize <>
  1956. VObj.AutoResize THEN
  1957. PUT STREAM s-io UNFORMATTED
  1958. SKIP ' AutoResize='
  1959. VObj.AutoResize.
  1960. /*
  1961. File: savend.i
  1962. (Save no default values).
  1963. Author: Klaus Erichsen
  1964. Parameter: {1}: Buffer name
  1965. {2}: Field name
  1966. {3}: Attribute text
  1967. Example of command:
  1968. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1969. PUT STREAM s-io UNFORMATTED
  1970. SKIP " GridWidth=" VReport.GridWidth.
  1971. Last change: KE 19 Aug 2000 4:16 pm
  1972. */
  1973. IF b-VObj.FgColour <>
  1974. VObj.FgColour THEN
  1975. PUT STREAM s-io UNFORMATTED
  1976. SKIP ' FgColour='
  1977. VObj.FgColour.
  1978. /*
  1979. File: savend.i
  1980. (Save no default values).
  1981. Author: Klaus Erichsen
  1982. Parameter: {1}: Buffer name
  1983. {2}: Field name
  1984. {3}: Attribute text
  1985. Example of command:
  1986. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  1987. PUT STREAM s-io UNFORMATTED
  1988. SKIP " GridWidth=" VReport.GridWidth.
  1989. Last change: KE 19 Aug 2000 4:16 pm
  1990. */
  1991. IF b-VObj.BgColour <>
  1992. VObj.BgColour THEN
  1993. PUT STREAM s-io UNFORMATTED
  1994. SKIP ' BgColour='
  1995. VObj.BgColour.
  1996. /*
  1997. File: savend.i
  1998. (Save no default values).
  1999. Author: Klaus Erichsen
  2000. Parameter: {1}: Buffer name
  2001. {2}: Field name
  2002. {3}: Attribute text
  2003. Example of command:
  2004. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2005. PUT STREAM s-io UNFORMATTED
  2006. SKIP " GridWidth=" VReport.GridWidth.
  2007. Last change: KE 19 Aug 2000 4:16 pm
  2008. */
  2009. IF b-VObj.FontNo <>
  2010. VObj.FontNo THEN
  2011. PUT STREAM s-io UNFORMATTED
  2012. SKIP ' FontNo='
  2013. VObj.FontNo.
  2014. /*
  2015. File: savend.i
  2016. (Save no default values).
  2017. Author: Klaus Erichsen
  2018. Parameter: {1}: Buffer name
  2019. {2}: Field name
  2020. {3}: Attribute text
  2021. Example of command:
  2022. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2023. PUT STREAM s-io UNFORMATTED
  2024. SKIP " GridWidth=" VReport.GridWidth.
  2025. Last change: KE 19 Aug 2000 4:16 pm
  2026. */
  2027. IF b-VObj.Private-Data <>
  2028. VObj.Private-Data THEN
  2029. PUT STREAM s-io UNFORMATTED
  2030. SKIP ' Private-Data='
  2031. VObj.Private-Data.
  2032. /*
  2033. File: savend.i
  2034. (Save no default values).
  2035. Author: Klaus Erichsen
  2036. Parameter: {1}: Buffer name
  2037. {2}: Field name
  2038. {3}: Attribute text
  2039. Example of command:
  2040. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2041. PUT STREAM s-io UNFORMATTED
  2042. SKIP " GridWidth=" VReport.GridWidth.
  2043. Last change: KE 19 Aug 2000 4:16 pm
  2044. */
  2045. IF b-VObj.Order <>
  2046. VObj.Order THEN
  2047. PUT STREAM s-io UNFORMATTED
  2048. SKIP ' Order='
  2049. VObj.Order.
  2050. /*
  2051. File: savend.i
  2052. (Save no default values).
  2053. Author: Klaus Erichsen
  2054. Parameter: {1}: Buffer name
  2055. {2}: Field name
  2056. {3}: Attribute text
  2057. Example of command:
  2058. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2059. PUT STREAM s-io UNFORMATTED
  2060. SKIP " GridWidth=" VReport.GridWidth.
  2061. Last change: KE 19 Aug 2000 4:16 pm
  2062. */
  2063. IF b-VObj.zOrder <>
  2064. VObj.zOrder THEN
  2065. PUT STREAM s-io UNFORMATTED
  2066. SKIP ' zOrder='
  2067. VObj.zOrder.
  2068. /*
  2069. File: savend.i
  2070. (Save no default values).
  2071. Author: Klaus Erichsen
  2072. Parameter: {1}: Buffer name
  2073. {2}: Field name
  2074. {3}: Attribute text
  2075. Example of command:
  2076. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2077. PUT STREAM s-io UNFORMATTED
  2078. SKIP " GridWidth=" VReport.GridWidth.
  2079. Last change: KE 19 Aug 2000 4:16 pm
  2080. */
  2081. IF b-VObj.KeepText <>
  2082. VObj.KeepText THEN
  2083. PUT STREAM s-io UNFORMATTED
  2084. SKIP ' KeepText='
  2085. VObj.KeepText.
  2086. PUT STREAM s-io UNFORMATTED
  2087. SKIP IF VObj.Type = "Cell" THEN " EndObject=Cell"
  2088. ELSE " EndObject=Text".
  2089. END. /* of for each obj of group */
  2090. /* Save grouped rectangle objects. */
  2091. FOR EACH VRec WHERE VRec.ReportNum = VReport.Num
  2092. AND VRec.GroupNum = VGroup.Num:
  2093. RUN ip-writeCurrentVRec.
  2094. END. /* of for save rectangles */
  2095. /* Save grouped image objects. */
  2096. FOR EACH VImg WHERE VImg.ReportNum = VReport.Num
  2097. AND VImg.GroupNum = VGroup.Num:
  2098. RUN ip-writeCurrentVImg.
  2099. END. /* of for save images */
  2100. /* Save Line objects that are belonging to a group. */
  2101. FOR EACH VLin WHERE VLin.ReportNum = VReport.Num
  2102. AND VLin.GroupNum = VGroup.Num:
  2103. RUN ip-writeCurrentVLin.
  2104. END. /* of for save lines */
  2105. /* write end of group marker */
  2106. PUT STREAM s-io UNFORMATTED
  2107. SKIP(1) " EndObject=Group".
  2108. END. /* of for each group of report */
  2109. /*
  2110. * save object that aren't part of a group
  2111. */
  2112. /* Save Rectangle objects. */
  2113. FOR EACH VRec WHERE VRec.ReportNum = VReport.Num
  2114. AND VRec.GroupNum = 0:
  2115. RUN ip-writeCurrentVRec.
  2116. END. /* of for save rectangles */
  2117. /* Save Image objects. */
  2118. FOR EACH VImg WHERE VImg.ReportNum = VReport.Num
  2119. AND VImg.GroupNum = 0:
  2120. RUN ip-writeCurrentVImg.
  2121. END. /* of for save images */
  2122. /* Save Line objects. */
  2123. FOR EACH VLin WHERE VLin.ReportNum = VReport.Num
  2124. AND VLin.GroupNum = 0:
  2125. RUN ip-writeCurrentVLin.
  2126. END. /* of for save lines */
  2127. PUT STREAM s-io UNFORMATTED
  2128. SKIP(1) "EndObject=Report".
  2129. END. /* of for each report. */
  2130. PUT STREAM s-io UNFORMATTED SKIP(1).
  2131. OUTPUT STREAM s-io CLOSE.
  2132. /* Delete buffer for default values */
  2133. DELETE b-VReport.
  2134. DELETE b-VGroup.
  2135. DELETE b-VObj.
  2136. /* DELETE b-VLin.
  2137. DELETE b-VRec.
  2138. DELETE b-VImg.*/
  2139. END PROCEDURE . /* ip-savereports */
  2140. PROCEDURE ip-writeCurrentVImg:
  2141. DEF BUFFER b-VImg FOR TEMP-TABLE VImg.
  2142. CREATE b-VImg.
  2143. PUT STREAM s-io UNFORMATTED
  2144. SKIP(1) " BeginObject=Image"
  2145. SKIP
  2146. " Name=" VImg.Name
  2147. SKIP
  2148. " ImgFile=" VImg.ImgFile
  2149. /* Save measures as 1/10 mm now. */
  2150. SKIP
  2151. " X-mm=" VImg.x-mm
  2152. SKIP
  2153. " Y-mm=" VImg.y-mm
  2154. SKIP
  2155. " Width-mm=" VImg.Width-mm
  2156. SKIP
  2157. " Height-mm=" VImg.Height-mm
  2158. .
  2159. /*
  2160. File: savend.i
  2161. (Save no default values).
  2162. Author: Klaus Erichsen
  2163. Parameter: {1}: Buffer name
  2164. {2}: Field name
  2165. {3}: Attribute text
  2166. Example of command:
  2167. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2168. PUT STREAM s-io UNFORMATTED
  2169. SKIP " GridWidth=" VReport.GridWidth.
  2170. Last change: KE 19 Aug 2000 4:16 pm
  2171. */
  2172. IF b-VImg.Adjust <>
  2173. VImg.Adjust THEN
  2174. PUT STREAM s-io UNFORMATTED
  2175. SKIP ' Adjust='
  2176. VImg.Adjust.
  2177. /*
  2178. File: savend.i
  2179. (Save no default values).
  2180. Author: Klaus Erichsen
  2181. Parameter: {1}: Buffer name
  2182. {2}: Field name
  2183. {3}: Attribute text
  2184. Example of command:
  2185. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2186. PUT STREAM s-io UNFORMATTED
  2187. SKIP " GridWidth=" VReport.GridWidth.
  2188. Last change: KE 19 Aug 2000 4:16 pm
  2189. */
  2190. IF b-VImg.Ratio <>
  2191. VImg.Ratio THEN
  2192. PUT STREAM s-io UNFORMATTED
  2193. SKIP ' Ratio='
  2194. VImg.Ratio.
  2195. /*
  2196. File: savend.i
  2197. (Save no default values).
  2198. Author: Klaus Erichsen
  2199. Parameter: {1}: Buffer name
  2200. {2}: Field name
  2201. {3}: Attribute text
  2202. Example of command:
  2203. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2204. PUT STREAM s-io UNFORMATTED
  2205. SKIP " GridWidth=" VReport.GridWidth.
  2206. Last change: KE 19 Aug 2000 4:16 pm
  2207. */
  2208. IF b-VImg.ImgType <>
  2209. VImg.ImgType THEN
  2210. PUT STREAM s-io UNFORMATTED
  2211. SKIP ' ImgType='
  2212. VImg.ImgType.
  2213. /*
  2214. File: savend.i
  2215. (Save no default values).
  2216. Author: Klaus Erichsen
  2217. Parameter: {1}: Buffer name
  2218. {2}: Field name
  2219. {3}: Attribute text
  2220. Example of command:
  2221. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2222. PUT STREAM s-io UNFORMATTED
  2223. SKIP " GridWidth=" VReport.GridWidth.
  2224. Last change: KE 19 Aug 2000 4:16 pm
  2225. */
  2226. IF b-VImg.Private-Data <>
  2227. VImg.Private-Data THEN
  2228. PUT STREAM s-io UNFORMATTED
  2229. SKIP ' Private-Data='
  2230. VImg.Private-Data.
  2231. /*
  2232. File: savend.i
  2233. (Save no default values).
  2234. Author: Klaus Erichsen
  2235. Parameter: {1}: Buffer name
  2236. {2}: Field name
  2237. {3}: Attribute text
  2238. Example of command:
  2239. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2240. PUT STREAM s-io UNFORMATTED
  2241. SKIP " GridWidth=" VReport.GridWidth.
  2242. Last change: KE 19 Aug 2000 4:16 pm
  2243. */
  2244. IF b-VImg.Order <>
  2245. VImg.Order THEN
  2246. PUT STREAM s-io UNFORMATTED
  2247. SKIP ' Order='
  2248. VImg.Order.
  2249. /*
  2250. File: savend.i
  2251. (Save no default values).
  2252. Author: Klaus Erichsen
  2253. Parameter: {1}: Buffer name
  2254. {2}: Field name
  2255. {3}: Attribute text
  2256. Example of command:
  2257. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2258. PUT STREAM s-io UNFORMATTED
  2259. SKIP " GridWidth=" VReport.GridWidth.
  2260. Last change: KE 19 Aug 2000 4:16 pm
  2261. */
  2262. IF b-VImg.zOrder <>
  2263. VImg.zOrder THEN
  2264. PUT STREAM s-io UNFORMATTED
  2265. SKIP ' zOrder='
  2266. VImg.zOrder.
  2267. PUT STREAM s-io UNFORMATTED
  2268. SKIP
  2269. " EndObject=Image".
  2270. DELETE b-VImg.
  2271. END PROCEDURE.
  2272. PROCEDURE ip-writeCurrentVRec:
  2273. DEF BUFFER b-VRec FOR TEMP-TABLE VRec.
  2274. CREATE b-VRec.
  2275. PUT STREAM s-io UNFORMATTED
  2276. SKIP(1) " BeginObject=Rectangle"
  2277. SKIP
  2278. " Name=" VRec.Name
  2279. /* Save measures as 1/10 mm now. */
  2280. SKIP
  2281. " X-mm=" VRec.x-mm
  2282. SKIP
  2283. " Y-mm=" VRec.y-mm
  2284. SKIP
  2285. " Width-mm=" VRec.Width-mm
  2286. SKIP
  2287. " Height-mm=" VRec.Height-mm
  2288. .
  2289. /*
  2290. File: savend.i
  2291. (Save no default values).
  2292. Author: Klaus Erichsen
  2293. Parameter: {1}: Buffer name
  2294. {2}: Field name
  2295. {3}: Attribute text
  2296. Example of command:
  2297. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2298. PUT STREAM s-io UNFORMATTED
  2299. SKIP " GridWidth=" VReport.GridWidth.
  2300. Last change: KE 19 Aug 2000 4:16 pm
  2301. */
  2302. IF b-VRec.Rounded <>
  2303. VRec.Rounded THEN
  2304. PUT STREAM s-io UNFORMATTED
  2305. SKIP ' Rounded='
  2306. VRec.Rounded.
  2307. /*
  2308. File: savend.i
  2309. (Save no default values).
  2310. Author: Klaus Erichsen
  2311. Parameter: {1}: Buffer name
  2312. {2}: Field name
  2313. {3}: Attribute text
  2314. Example of command:
  2315. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2316. PUT STREAM s-io UNFORMATTED
  2317. SKIP " GridWidth=" VReport.GridWidth.
  2318. Last change: KE 19 Aug 2000 4:16 pm
  2319. */
  2320. IF b-VRec.Filled <>
  2321. VRec.Filled THEN
  2322. PUT STREAM s-io UNFORMATTED
  2323. SKIP ' Filled='
  2324. VRec.Filled.
  2325. /*
  2326. File: savend.i
  2327. (Save no default values).
  2328. Author: Klaus Erichsen
  2329. Parameter: {1}: Buffer name
  2330. {2}: Field name
  2331. {3}: Attribute text
  2332. Example of command:
  2333. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2334. PUT STREAM s-io UNFORMATTED
  2335. SKIP " GridWidth=" VReport.GridWidth.
  2336. Last change: KE 19 Aug 2000 4:16 pm
  2337. */
  2338. IF b-VRec.EdgePix <>
  2339. VRec.EdgePix THEN
  2340. PUT STREAM s-io UNFORMATTED
  2341. SKIP ' EdgePixels='
  2342. VRec.EdgePix.
  2343. /*
  2344. File: savend.i
  2345. (Save no default values).
  2346. Author: Klaus Erichsen
  2347. Parameter: {1}: Buffer name
  2348. {2}: Field name
  2349. {3}: Attribute text
  2350. Example of command:
  2351. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2352. PUT STREAM s-io UNFORMATTED
  2353. SKIP " GridWidth=" VReport.GridWidth.
  2354. Last change: KE 19 Aug 2000 4:16 pm
  2355. */
  2356. IF b-VRec.BgColour <>
  2357. VRec.BgColour THEN
  2358. PUT STREAM s-io UNFORMATTED
  2359. SKIP ' BgColour='
  2360. VRec.BgColour.
  2361. /*
  2362. File: savend.i
  2363. (Save no default values).
  2364. Author: Klaus Erichsen
  2365. Parameter: {1}: Buffer name
  2366. {2}: Field name
  2367. {3}: Attribute text
  2368. Example of command:
  2369. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2370. PUT STREAM s-io UNFORMATTED
  2371. SKIP " GridWidth=" VReport.GridWidth.
  2372. Last change: KE 19 Aug 2000 4:16 pm
  2373. */
  2374. IF b-VRec.Private-Data <>
  2375. VRec.Private-Data THEN
  2376. PUT STREAM s-io UNFORMATTED
  2377. SKIP ' Private-Data='
  2378. VRec.Private-Data.
  2379. /*
  2380. File: savend.i
  2381. (Save no default values).
  2382. Author: Klaus Erichsen
  2383. Parameter: {1}: Buffer name
  2384. {2}: Field name
  2385. {3}: Attribute text
  2386. Example of command:
  2387. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2388. PUT STREAM s-io UNFORMATTED
  2389. SKIP " GridWidth=" VReport.GridWidth.
  2390. Last change: KE 19 Aug 2000 4:16 pm
  2391. */
  2392. IF b-VRec.Order <>
  2393. VRec.Order THEN
  2394. PUT STREAM s-io UNFORMATTED
  2395. SKIP ' Order='
  2396. VRec.Order.
  2397. /*
  2398. File: savend.i
  2399. (Save no default values).
  2400. Author: Klaus Erichsen
  2401. Parameter: {1}: Buffer name
  2402. {2}: Field name
  2403. {3}: Attribute text
  2404. Example of command:
  2405. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2406. PUT STREAM s-io UNFORMATTED
  2407. SKIP " GridWidth=" VReport.GridWidth.
  2408. Last change: KE 19 Aug 2000 4:16 pm
  2409. */
  2410. IF b-VRec.zOrder <>
  2411. VRec.zOrder THEN
  2412. PUT STREAM s-io UNFORMATTED
  2413. SKIP ' zOrder='
  2414. VRec.zOrder.
  2415. PUT STREAM s-io UNFORMATTED
  2416. SKIP
  2417. " EndObject=Rectangle".
  2418. DELETE b-VRec.
  2419. END PROCEDURE.
  2420. PROCEDURE ip-writeCurrentVLin:
  2421. DEF BUFFER b-VLin FOR TEMP-TABLE VLin.
  2422. CREATE b-VLin.
  2423. PUT STREAM s-io UNFORMATTED
  2424. SKIP(1) " BeginObject=Line"
  2425. SKIP
  2426. " Name=" VLin.Name
  2427. SKIP
  2428. " X-mm=" VLin.x-mm
  2429. SKIP
  2430. " Y-mm=" VLin.y-mm
  2431. SKIP
  2432. " Len-mm=" VLin.Len-mm
  2433. SKIP
  2434. " Height-mm=" VLin.Height-mm
  2435. .
  2436. /*
  2437. File: savend.i
  2438. (Save no default values).
  2439. Author: Klaus Erichsen
  2440. Parameter: {1}: Buffer name
  2441. {2}: Field name
  2442. {3}: Attribute text
  2443. Example of command:
  2444. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2445. PUT STREAM s-io UNFORMATTED
  2446. SKIP " GridWidth=" VReport.GridWidth.
  2447. Last change: KE 19 Aug 2000 4:16 pm
  2448. */
  2449. IF b-VLin.BgColour <>
  2450. VLin.BgColour THEN
  2451. PUT STREAM s-io UNFORMATTED
  2452. SKIP ' BgColour='
  2453. VLin.BgColour.
  2454. /*
  2455. File: savend.i
  2456. (Save no default values).
  2457. Author: Klaus Erichsen
  2458. Parameter: {1}: Buffer name
  2459. {2}: Field name
  2460. {3}: Attribute text
  2461. Example of command:
  2462. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2463. PUT STREAM s-io UNFORMATTED
  2464. SKIP " GridWidth=" VReport.GridWidth.
  2465. Last change: KE 19 Aug 2000 4:16 pm
  2466. */
  2467. IF b-VLin.Type <>
  2468. VLin.Type THEN
  2469. PUT STREAM s-io UNFORMATTED
  2470. SKIP ' Type='
  2471. VLin.Type.
  2472. /*
  2473. File: savend.i
  2474. (Save no default values).
  2475. Author: Klaus Erichsen
  2476. Parameter: {1}: Buffer name
  2477. {2}: Field name
  2478. {3}: Attribute text
  2479. Example of command:
  2480. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2481. PUT STREAM s-io UNFORMATTED
  2482. SKIP " GridWidth=" VReport.GridWidth.
  2483. Last change: KE 19 Aug 2000 4:16 pm
  2484. */
  2485. IF b-VLin.Style <>
  2486. VLin.Style THEN
  2487. PUT STREAM s-io UNFORMATTED
  2488. SKIP ' Style='
  2489. VLin.Style.
  2490. /*
  2491. File: savend.i
  2492. (Save no default values).
  2493. Author: Klaus Erichsen
  2494. Parameter: {1}: Buffer name
  2495. {2}: Field name
  2496. {3}: Attribute text
  2497. Example of command:
  2498. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2499. PUT STREAM s-io UNFORMATTED
  2500. SKIP " GridWidth=" VReport.GridWidth.
  2501. Last change: KE 19 Aug 2000 4:16 pm
  2502. */
  2503. IF b-VLin.Private-Data <>
  2504. VLin.Private-Data THEN
  2505. PUT STREAM s-io UNFORMATTED
  2506. SKIP ' Private-Data='
  2507. VLin.Private-Data.
  2508. /*
  2509. File: savend.i
  2510. (Save no default values).
  2511. Author: Klaus Erichsen
  2512. Parameter: {1}: Buffer name
  2513. {2}: Field name
  2514. {3}: Attribute text
  2515. Example of command:
  2516. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2517. PUT STREAM s-io UNFORMATTED
  2518. SKIP " GridWidth=" VReport.GridWidth.
  2519. Last change: KE 19 Aug 2000 4:16 pm
  2520. */
  2521. IF b-VLin.Order <>
  2522. VLin.Order THEN
  2523. PUT STREAM s-io UNFORMATTED
  2524. SKIP ' Order='
  2525. VLin.Order.
  2526. /*
  2527. File: savend.i
  2528. (Save no default values).
  2529. Author: Klaus Erichsen
  2530. Parameter: {1}: Buffer name
  2531. {2}: Field name
  2532. {3}: Attribute text
  2533. Example of command:
  2534. IF b-VReport.GridWidth <> VReport.GridWidth THEN
  2535. PUT STREAM s-io UNFORMATTED
  2536. SKIP " GridWidth=" VReport.GridWidth.
  2537. Last change: KE 19 Aug 2000 4:16 pm
  2538. */
  2539. IF b-VLin.zOrder <>
  2540. VLin.zOrder THEN
  2541. PUT STREAM s-io UNFORMATTED
  2542. SKIP ' zOrder='
  2543. VLin.zOrder.
  2544. PUT STREAM s-io UNFORMATTED
  2545. SKIP
  2546. " EndObject=Line".
  2547. DELETE b-VLin.
  2548. END PROCEDURE.
  2549. /**
  2550. [
  2551. PROCEDURE ip-SetAttribut IN p-Attrib AS CHAR
  2552. IN p-Value AS CHAR old
  2553. PROCEDURE ip-GetAttribut: IN p-Attrib AS CHAR
  2554. OUT p-Value AS CHAR old
  2555. ]
  2556. */
  2557. /* Set/Get attributes. */
  2558. PROCEDURE ip-SetAttribut:
  2559. DEF INPUT PARAM pp-Attrib AS CHAR NO-UNDO.
  2560. DEF INPUT PARAM pp-Value AS CHAR NO-UNDO.
  2561. CASE pp-Attrib:
  2562. /* WHEN "LibName" THEN l-LibName = pp-Value.*/
  2563. WHEN "ReportName" THEN
  2564. l-RepName = pp-Value.
  2565. WHEN "TestMode" THEN
  2566. l-testmode = TRUE.
  2567. OTHERWISE
  2568. MESSAGE "Unknown Attribute: " pp-Attrib.
  2569. END CASE.
  2570. END PROCEDURE. /* ip-setreport */
  2571. PROCEDURE ip-GetAttribut:
  2572. DEF INPUT PARAM pp-Attrib AS CHAR NO-UNDO.
  2573. DEF OUTPUT PARAM pp-Value AS CHAR NO-UNDO.
  2574. CASE pp-Attrib:
  2575. WHEN "Nothing" THEN
  2576. pp-Value = "Nothing".
  2577. OTHERWISE
  2578. MESSAGE "Unknown Attribute: " pp-Attrib.
  2579. END CASE.
  2580. END PROCEDURE. /* ip-GetAttribut */
  2581. /** xml IO */
  2582. /** dump/load IO */
  2583. /** dirext DB IO */
  2584. /** Basic Viper API */
  2585. /*
  2586. * Name : Viper.i
  2587. * System: MS-Windows 3.x
  2588. * Copyright: IAP 1997
  2589. * Author: nj, ke, jc
  2590. * Purpose: This librara is included in viper.p, it declares the external
  2591. * procedures which are in the dll.
  2592. *
  2593. * ke, 15.05.97; added vpprintmode, vpsetcellwrap
  2594. * jc, 20.08.97; added VpShowPreview,VpHidePreview,VpSetCellColor
  2595. * jc, 28.08.97; error handling
  2596. * jc, late 20th century: i guess a lot of stuff has happened in the
  2597. * meantime, may or may not be seen in viper.p. :)
  2598. * jc, 19.01.98: added VpEndDoc, VpSet/GetGroupVPos,VpGetCellH/VPos
  2599. * jc, 04.02.98: added VpSetCellRTF
  2600. * jc, 07.04.98: VpSetPrinterAttrib
  2601. * jc, 27.04.98: VpDebug
  2602. * jc, 29.04.98: VpOpenDoc, VpSaveDoc
  2603. * jc, 29.05.98: VpGetPrinterAttrib
  2604. * jc, 24.06.98: VpSaveClipboardToFile
  2605. * jc, 26.06.98: VpSaveWindowToFile
  2606. * jc, 13.11.98: VpSetCellSplit
  2607. * jc, 23.11.98: VpGetCellLineCount, VpShowDLLVersion
  2608. * jc, 10.12.98: VpSetCellBuffer, VpAddToCellBuffer, VpSubmitCellBuffer, VpDeleteCellBuffer
  2609. * jc, 11.02.99: VpSetWindowPos
  2610. * jc, xx.xx.99 and xx.xx.00: Some more stuff, see the function headers for details...
  2611. * jc, 10.07.2000: VpSetCellLineSpacing, GetCellWidth
  2612. * jc, 17.08.2000: VpPS2PDF
  2613. * jc, 15.02.2001: VpGetCellHeight
  2614. * jc, 03.07.2001: VpSetPaperSize
  2615. * jc, 04.10.2001: VpSetDocTitle
  2616. Last change: BH 26 Mar 2002 5:56 pm
  2617. * jc, 23.08.2002: VpExportDoc
  2618. * jc,bh, 27.02.2003: VpShowDoc
  2619. * jc 15.03.2003: VpGetPreviewStatus
  2620. * jc 12.06.03 _VpGetDefaultPrinter
  2621. * bh 06.10.04 OUTPUT changed to INPUT-OUTPUT due to 10.B 4GL Issue with DLL calls
  2622. * jc 21.02.05 VpDebugDumpDocument
  2623. * jc 25.04.05 VpSetPageVPos
  2624. * jc 03.05.05 VpSetDocAttrib
  2625. * jc 13.05.05 VpSetGraphObj
  2626. * jc 26.05.05 VpSetGroupAttr
  2627. * jc 27.05.05 VpSetGraphObjAttr
  2628. */
  2629. /* Preprocessor-defines */
  2630. /* needs {&VDLL} , e.g. SCOPED-DEFINE VDLL "viper01.dll" */
  2631. /* Now define the Internal procedures to wrap the dll-calls. */
  2632. PROCEDURE VpSetCell EXTERNAL "viper32.dll" CDECL :
  2633. DEF INPUT PARAM p-cell AS CHAR NO-UNDO. /* always case-sensitive */
  2634. DEF INPUT PARAM p-group AS CHAR NO-UNDO. /* dito */
  2635. DEF INPUT PARAM p-action AS CHAR NO-UNDO. /* "Create" | "Destroy" (not case-sens.) */
  2636. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2637. END.
  2638. PROCEDURE VpText EXTERNAL "viper32.dll" CDECL :
  2639. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  2640. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2641. DEF INPUT PARAM p-text AS CHAR NO-UNDO.
  2642. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2643. END.
  2644. PROCEDURE VpSetDelimiter EXTERNAL "viper32.dll" CDECL :
  2645. DEF INPUT PARAM p-del AS CHAR NO-UNDO.
  2646. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2647. END.
  2648. PROCEDURE VpSetGroupText EXTERNAL "viper32.dll" CDECL :
  2649. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2650. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  2651. DEF INPUT PARAM p-texts AS CHAR NO-UNDO.
  2652. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2653. END.
  2654. PROCEDURE VpSetRect EXTERNAL "viper32.dll" CDECL :
  2655. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  2656. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2657. DEF INPUT PARAM p-x AS SHORT NO-UNDO.
  2658. DEF INPUT PARAM p-y AS SHORT NO-UNDO.
  2659. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2660. DEF INPUT PARAM p-height AS SHORT NO-UNDO.
  2661. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2662. END.
  2663. PROCEDURE VpSetFont EXTERNAL "viper32.dll" CDECL :
  2664. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  2665. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2666. DEF INPUT PARAM p-height AS SHORT NO-UNDO.
  2667. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2668. DEF INPUT PARAM p-format AS SHORT NO-UNDO. /* 1=italic,2=underline,4=strikeout,8=bold */
  2669. DEF INPUT PARAM p-family AS SHORT NO-UNDO. /* font-family (0 if no altern.) */
  2670. DEF INPUT PARAM p-fontName AS CHAR NO-UNDO. /* e.g. "Arial", "TimesNewRoman",... */
  2671. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2672. END.
  2673. PROCEDURE VpSetResize EXTERNAL "viper32.dll" CDECL :
  2674. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  2675. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2676. DEF INPUT PARAM p-dynamic AS SHORT NO-UNDO. /* 0 = static / 1 = dynamic cell */
  2677. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2678. END.
  2679. PROCEDURE VpSetCellWrap EXTERNAL "viper32.dll" CDECL :
  2680. DEF INPUT PARAM p-cell AS CHAR NO-UNDO. /* always case-sensitive */
  2681. DEF INPUT PARAM p-group AS CHAR NO-UNDO. /* dito */
  2682. DEF INPUT PARAM p-Mode AS SHORT NO-UNDO. /* 0 = noWrap 1 = Wrap */
  2683. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2684. END.
  2685. PROCEDURE VpSetGroupSkip EXTERNAL "viper32.dll" CDECL :
  2686. DEF INPUT PARAM p-group AS CHAR NO-UNDO. /* */
  2687. DEF INPUT PARAM p-pre AS SHORT NO-UNDO. /* SKIP vor der group */
  2688. DEF INPUT PARAM p-post AS SHORT NO-UNDO. /* SKIP nach der group */
  2689. DEF INPUT PARAM p-point AS SHORT NO-UNDO. /* 0 = 0,1mm 1 = POINTS */
  2690. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2691. END.
  2692. PROCEDURE VpFlushGroup EXTERNAL "viper32.dll" CDECL :
  2693. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2694. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2695. END.
  2696. PROCEDURE VpNewPage EXTERNAL "viper32.dll" CDECL :
  2697. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2698. END.
  2699. /* prints (view) from page to page */
  2700. PROCEDURE VpPrint EXTERNAL "viper32.dll" CDECL :
  2701. DEF INPUT PARAM p-from AS SHORT NO-UNDO.
  2702. DEF INPUT PARAM p-to AS SHORT NO-UNDO.
  2703. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2704. END.
  2705. PROCEDURE VpSetJustify EXTERNAL "viper32.dll" CDECL :
  2706. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  2707. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2708. DEF INPUT PARAM p-type AS SHORT NO-UNDO.
  2709. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2710. END.
  2711. PROCEDURE VpDeleteAll EXTERNAL "viper32.dll" CDECL :
  2712. DEF RETURN PARAM p-dummy AS SHORT NO-UNDO.
  2713. END.
  2714. /********************************************** gfx-support ***/
  2715. PROCEDURE VpFreeLine EXTERNAL "viper32.dll" CDECL :
  2716. DEF INPUT PARAM p-x AS SHORT NO-UNDO.
  2717. DEF INPUT PARAM p-y AS SHORT NO-UNDO.
  2718. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2719. DEF INPUT PARAM p-height AS SHORT NO-UNDO.
  2720. DEF INPUT PARAM p-style AS SHORT NO-UNDO.
  2721. DEF INPUT PARAM p-bwidth AS SHORT NO-UNDO.
  2722. DEF INPUT PARAM p-col AS LONG NO-UNDO. /* col is RGB (bitfield) */
  2723. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2724. END.
  2725. PROCEDURE VpRectangle EXTERNAL "viper32.dll" CDECL :
  2726. DEF INPUT PARAM p-x AS SHORT NO-UNDO.
  2727. DEF INPUT PARAM p-y AS SHORT NO-UNDO.
  2728. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2729. DEF INPUT PARAM p-height AS SHORT NO-UNDO.
  2730. DEF INPUT PARAM p-filled AS SHORT NO-UNDO.
  2731. DEF INPUT PARAM p-col AS LONG NO-UNDO.
  2732. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2733. END.
  2734. PROCEDURE VpRoundRect EXTERNAL "viper32.dll" CDECL :
  2735. DEF INPUT PARAM p-x AS SHORT NO-UNDO.
  2736. DEF INPUT PARAM p-y AS SHORT NO-UNDO.
  2737. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2738. DEF INPUT PARAM p-height AS SHORT NO-UNDO.
  2739. DEF INPUT PARAM p-filled AS SHORT NO-UNDO.
  2740. DEF INPUT PARAM p-col AS LONG NO-UNDO.
  2741. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2742. END.
  2743. PROCEDURE VpHLine EXTERNAL "viper32.dll" CDECL :
  2744. DEF INPUT PARAM p-x AS SHORT NO-UNDO.
  2745. DEF INPUT PARAM p-y AS SHORT NO-UNDO.
  2746. DEF INPUT PARAM p-len AS SHORT NO-UNDO.
  2747. DEF INPUT PARAM p-style AS SHORT NO-UNDO.
  2748. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2749. DEF INPUT PARAM p-col AS LONG NO-UNDO.
  2750. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2751. END.
  2752. PROCEDURE VpVLine EXTERNAL "viper32.dll" CDECL :
  2753. DEF INPUT PARAM p-x AS SHORT NO-UNDO.
  2754. DEF INPUT PARAM p-y AS SHORT NO-UNDO.
  2755. DEF INPUT PARAM p-len AS SHORT NO-UNDO.
  2756. DEF INPUT PARAM p-style AS SHORT NO-UNDO.
  2757. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2758. DEF INPUT PARAM p-col AS LONG NO-UNDO.
  2759. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2760. END.
  2761. PROCEDURE VpHSep EXTERNAL "viper32.dll" CDECL :
  2762. DEF INPUT PARAM p-len AS SHORT NO-UNDO.
  2763. DEF INPUT PARAM p-justify AS SHORT NO-UNDO.
  2764. DEF INPUT PARAM p-style AS SHORT NO-UNDO.
  2765. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2766. DEF INPUT PARAM p-col AS LONG NO-UNDO.
  2767. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2768. END.
  2769. /************************************************* end of gfx-support ***/
  2770. /************************************************ get property-values ***/
  2771. PROCEDURE VpCellHeight EXTERNAL "viper32.dll" CDECL :
  2772. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  2773. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2774. DEF RETURN PARAM p-height AS SHORT NO-UNDO.
  2775. /* DEF RETURN PARAM p-err AS SHORT NO-UNDO. */
  2776. END.
  2777. PROCEDURE VpGroupHeight EXTERNAL "viper32.dll" CDECL :
  2778. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2779. DEF RETURN PARAM p-height AS SHORT NO-UNDO.
  2780. /* DEF RETURN PARAM p-err AS SHORT NO-UNDO. */
  2781. END.
  2782. PROCEDURE VpGetFree EXTERNAL "viper32.dll" CDECL :
  2783. DEF RETURN PARAM p-space AS SHORT NO-UNDO.
  2784. END.
  2785. PROCEDURE VpGetPages EXTERNAL "viper32.dll" CDECL :
  2786. DEF RETURN PARAM p-pages AS SHORT NO-UNDO.
  2787. END.
  2788. PROCEDURE VpGetPos EXTERNAL "viper32.dll" CDECL :
  2789. DEF RETURN PARAM p-pos AS SHORT NO-UNDO.
  2790. END.
  2791. PROCEDURE VpBitmap EXTERNAL "viper32.dll" CDECL :
  2792. DEF INPUT PARAM p-Name AS CHAR NO-UNDO.
  2793. DEF INPUT PARAM p-x AS SHORT NO-UNDO.
  2794. DEF INPUT PARAM p-y AS SHORT NO-UNDO.
  2795. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  2796. DEF INPUT PARAM p-height AS SHORT NO-UNDO.
  2797. DEF INPUT PARAM p-adjust AS SHORT NO-UNDO.
  2798. DEF INPUT PARAM p-ratio AS SHORT NO-UNDO.
  2799. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2800. END.
  2801. /**********************************************\
  2802. |* Printer Auswahl Sachen (PAS) *|
  2803. |* first: select printer by name *|
  2804. |* second: printer dialog box *|
  2805. \**********************************************/
  2806. PROCEDURE VpSelectPrinter EXTERNAL "viper32.dll" CDECL :
  2807. DEF INPUT PARAM p-Name AS CHAR NO-UNDO.
  2808. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2809. END.
  2810. PROCEDURE VpPrinterSetup EXTERNAL "viper32.dll" CDECL :
  2811. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2812. END.
  2813. PROCEDURE VpPrinterDialog EXTERNAL "viper32.dll" CDECL :
  2814. DEF RETURN PARAM p-Button AS SHORT NO-UNDO.
  2815. END.
  2816. /****** Show and hide the preview window ***/
  2817. PROCEDURE VpShowPreview EXTERNAL "viper32.dll" CDECL :
  2818. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2819. END.
  2820. PROCEDURE VpHidePreview EXTERNAL "viper32.dll" CDECL :
  2821. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2822. END.
  2823. /**** End of showing and hiding the window. */
  2824. PROCEDURE VpSetCellColor EXTERNAL "viper32.dll" CDECL :
  2825. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  2826. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2827. DEF INPUT PARAM p-textc AS long NO-UNDO.
  2828. DEF INPUT PARAM p-backc AS long NO-UNDO.
  2829. DEF INPUT PARAM p-bkmode AS short NO-UNDO.
  2830. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2831. END.
  2832. /****** Some setups for printing ***/
  2833. PROCEDURE VpPrintOptions EXTERNAL "viper32.dll" CDECL :
  2834. DEF INPUT PARAM p-Mode AS CHAR NO-UNDO.
  2835. DEF INPUT PARAM p-i1 AS SHORT NO-UNDO.
  2836. DEF INPUT PARAM p-i2 AS SHORT NO-UNDO.
  2837. DEF INPUT PARAM p-i3 AS SHORT NO-UNDO.
  2838. DEF INPUT PARAM p-c1 AS CHAR NO-UNDO.
  2839. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2840. END.
  2841. /**** End of setups for printing. */
  2842. /************************************** end of get-properties ***/
  2843. PROCEDURE ReadErrors EXTERNAL "viper32.dll" CDECL :
  2844. DEF INPUT-OUTPUT PARAM p-lasterr AS SHORT NO-UNDO. /* last error-no. */
  2845. DEF RETURN PARAM p-err AS SHORT NO-UNDO. /* number of errors occured */
  2846. END.
  2847. /************************************ internal (private) ***/
  2848. /* start viper.exe */
  2849. PROCEDURE StartViper EXTERNAL "viper32.dll" CDECL :
  2850. DEF RETURN PARAM loaded AS SHORT NO-UNDO.
  2851. END.
  2852. /* reset data of DLL */
  2853. PROCEDURE ClearDLL EXTERNAL "viper32.dll" CDECL :
  2854. END.
  2855. /* close viper.exe */
  2856. /* clean-up */
  2857. PROCEDURE CloseViper EXTERNAL "viper32.dll" CDECL :
  2858. END.
  2859. /* 19.01.98 */
  2860. /* VpSetGroupVPos - set vertical group position
  2861. 19.01.98 jpc
  2862. */
  2863. PROCEDURE VpSetGroupVPos EXTERNAL "viper32.dll" CDECL :
  2864. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2865. DEF INPUT PARAM p-VPos AS SHORT NO-UNDO.
  2866. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2867. END.
  2868. /* VpGetCellVPos - get vertical cell position
  2869. 19.01.98 jpc
  2870. */
  2871. PROCEDURE VpGetCellVPos EXTERNAL "viper32.dll" CDECL :
  2872. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2873. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  2874. DEF RETURN PARAM p-VPos AS SHORT NO-UNDO.
  2875. END.
  2876. /* VpGetCellHPos - get vertical cell position
  2877. 19.01.98 jpc
  2878. */
  2879. PROCEDURE VpGetCellHPos EXTERNAL "viper32.dll" CDECL :
  2880. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2881. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  2882. DEF RETURN PARAM p-HPos AS SHORT NO-UNDO.
  2883. END.
  2884. /* VpGetGroupVPos - get vertical group position
  2885. 19.01.98 jpc
  2886. */
  2887. PROCEDURE VpGetGroupVPos EXTERNAL "viper32.dll" CDECL :
  2888. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2889. DEF RETURN PARAM p-VPos AS SHORT NO-UNDO.
  2890. END.
  2891. /* VpEndDoc - tell viper that it's over...
  2892. 19.01.98 jpc
  2893. */
  2894. PROCEDURE VpEndDoc EXTERNAL "viper32.dll" CDECL :
  2895. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2896. END.
  2897. /* 04.02.98 */
  2898. /* VpSetCellRTF - set a cell to RTF mode
  2899. 04.02.98 jpc
  2900. */
  2901. PROCEDURE VpSetCellRTF EXTERNAL "viper32.dll" CDECL :
  2902. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2903. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  2904. DEF INPUT PARAM p-rtf AS SHORT NO-UNDO.
  2905. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2906. END.
  2907. /* 07.04.98 */
  2908. /* VpSetPrinterAttrib - sets a couple of printerattributes
  2909. 07.04.98 jpc
  2910. */
  2911. PROCEDURE VpSetPrinterAttrib EXTERNAL "viper32.dll" CDECL :
  2912. DEF INPUT PARAM p-PrinterAttrib AS MEMPTR.
  2913. DEF INPUT PARAM p-duplex AS SHORT NO-UNDO.
  2914. END.
  2915. /* 27.04.98 */
  2916. /* VpDebug - call some debug helpers
  2917. 27.04.98 jpc
  2918. */
  2919. PROCEDURE VpDEBUG EXTERNAL "viper32.dll" CDECL :
  2920. DEF INPUT PARAM p-command AS CHAR NO-UNDO.
  2921. DEF INPUT PARAM p-parameter AS CHAR NO-UNDO.
  2922. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2923. END.
  2924. /* 29.04.98 */
  2925. /* VpSaveDoc - save a viper document
  2926. 29.04.98 jpc
  2927. */
  2928. PROCEDURE VpSaveDoc EXTERNAL "viper32.dll" CDECL :
  2929. DEF INPUT PARAM p-sFileName AS CHAR NO-UNDO.
  2930. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2931. END.
  2932. /* VpOpenDoc - load a viper document
  2933. 29.04.98 jpc
  2934. */
  2935. PROCEDURE VpOpenDoc EXTERNAL "viper32.dll" CDECL :
  2936. DEF INPUT PARAM p-sFileName AS CHAR NO-UNDO.
  2937. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2938. END.
  2939. /* VpGetPrinterAttrib - Get a given printer attrib
  2940. 28.05.98 jpc
  2941. */
  2942. PROCEDURE VpGetPrinterAttrib EXTERNAL "viper32.dll" CDECL :
  2943. DEF INPUT PARAM p-attrib AS CHAR NO-UNDO.
  2944. DEF RETURN PARAM p-value AS SHORT NO-UNDO.
  2945. END.
  2946. /* VpSaveClipboardToFile -
  2947. 24.06.98 jpc
  2948. */
  2949. PROCEDURE VpSaveClipboardToFile EXTERNAL "viper32.dll" CDECL :
  2950. DEF INPUT PARAM DataType AS SHORT NO-UNDO.
  2951. DEF INPUT PARAM FileNameIn AS CHAR NO-UNDO.
  2952. /* bug in 10.0B */
  2953. DEF INPUT-OUTPUT PARAM FileNameOut AS CHAR NO-UNDO.
  2954. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2955. END.
  2956. /* VpSaveWindowToFile -
  2957. 26.06.98 jpc
  2958. */
  2959. PROCEDURE VpSaveWindowToFile EXTERNAL "viper32.dll" CDECL :
  2960. DEF INPUT PARAM wind AS LONG NO-UNDO.
  2961. DEF INPUT PARAM AreaType AS SHORT NO-UNDO.
  2962. DEF INPUT PARAM FileNameIn AS CHAR NO-UNDO.
  2963. /* bug in 10.0B */
  2964. DEF INPUT-OUTPUT PARAM FileNameOut AS CHAR NO-UNDO.
  2965. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2966. END.
  2967. /* VpSetGroupCellPositioning - at FlushGroup:
  2968. OneLine=0 (default - like previous viper)
  2969. Relative=1 (retains the relative positions of the
  2970. cells in a group)
  2971. 24.09.98 jpc
  2972. */
  2973. PROCEDURE VpSetGroupCellPositioning EXTERNAL "viper32.dll" CDECL :
  2974. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2975. DEF INPUT PARAM p-Style AS SHORT NO-UNDO.
  2976. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2977. END.
  2978. /* VpSetCellSplit - Set if the Cell should split the cells' text between several
  2979. "instances" of a cell (i.e. allow cell to support "page break"
  2980. text
  2981. 13.11.98 jpc
  2982. */
  2983. PROCEDURE VpSetCellSplit EXTERNAL "viper32.dll" CDECL :
  2984. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2985. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  2986. DEF INPUT PARAM p-split AS SHORT NO-UNDO.
  2987. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  2988. END.
  2989. /* VpGetCellLineCount - Get number of linesin a cell
  2990. 23.11.98 jpc
  2991. */
  2992. PROCEDURE VpGetCellLineCount EXTERNAL "viper32.dll" CDECL :
  2993. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  2994. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  2995. DEF RETURN PARAM p-LineCount AS SHORT NO-UNDO.
  2996. END.
  2997. /* VpShowDLLVersion - Show a messagebox w/ compile date & time
  2998. 23.11.98 jpc
  2999. */
  3000. PROCEDURE VpShowDLLVersion EXTERNAL "viper32.dll" CDECL :
  3001. DEF RETURN PARAM p-ver AS SHORT NO-UNDO.
  3002. END.
  3003. /* VpSetCellBuffer - Set text in a cells buffer
  3004. 10.12.98 jpc
  3005. */
  3006. PROCEDURE VpSetCellBuffer EXTERNAL "viper32.dll" CDECL :
  3007. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3008. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3009. DEF INPUT PARAM p-text AS CHAR NO-UNDO.
  3010. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3011. END.
  3012. /* VpAddToCellBuffer - Add text to a cells buffer
  3013. 10.12.98 jpc
  3014. */
  3015. PROCEDURE VpAddToCellBuffer EXTERNAL "viper32.dll" CDECL :
  3016. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3017. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3018. DEF INPUT PARAM p-text AS CHAR NO-UNDO.
  3019. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3020. END.
  3021. /* VpSubmitCellBuffer - Submit the buffer to the CellText
  3022. i.e. Set the cells text to the text stored in the buffer
  3023. 10.12.98 jpc
  3024. */
  3025. PROCEDURE VpSubmitCellBuffer EXTERNAL "viper32.dll" CDECL :
  3026. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3027. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3028. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3029. END.
  3030. /* VpDeleteCellBuffer - Empties the cells buffer
  3031. 10.12.98 jpc
  3032. */
  3033. PROCEDURE VpDeleteCellBuffer EXTERNAL "viper32.dll" CDECL :
  3034. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3035. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3036. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3037. END.
  3038. /* VpSetWindowPos - setPosition of Viper window
  3039. 11.02.99 jpc
  3040. */
  3041. PROCEDURE VpSetWindowPos EXTERNAL "viper32.dll" CDECL :
  3042. DEF INPUT PARAM p-left AS SHORT NO-UNDO.
  3043. DEF INPUT PARAM p-top AS SHORT NO-UNDO.
  3044. DEF INPUT PARAM p-width AS SHORT NO-UNDO.
  3045. DEF INPUT PARAM p-height AS SHORT NO-UNDO.
  3046. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3047. END.
  3048. /* VpShowCellStatus - ShowStatus of a cell
  3049. 29.03.99 jpc
  3050. */
  3051. /* PROCEDURE VpShowCellStatus EXTERNAL {&VDLL} CDECL {&PST}:
  3052. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3053. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3054. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3055. END.
  3056. */
  3057. /* VpSetCurrentPageProperties
  3058. 27.08.99 jpc
  3059. */
  3060. PROCEDURE VpSetCurrentPageProperties EXTERNAL "viper32.dll" CDECL :
  3061. DEF INPUT PARAM p-prop AS CHAR NO-UNDO.
  3062. DEF INPUT PARAM p-value AS CHAR NO-UNDO.
  3063. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3064. END.
  3065. /* VpSetWindowPosCCI
  3066. 02.09.1999 jpc
  3067. */
  3068. PROCEDURE VpSetWindowPosCCI EXTERNAL "viper32.dll" CDECL :
  3069. DEF INPUT PARAM p-hwnd AS LONG NO-UNDO.
  3070. DEF INPUT PARAM p-x AS LONG NO-UNDO.
  3071. DEF INPUT PARAM p-y AS LONG NO-UNDO.
  3072. DEF INPUT PARAM p-cx AS LONG NO-UNDO.
  3073. DEF INPUT PARAM p-cy AS LONG NO-UNDO.
  3074. DEF INPUT PARAM p-flags AS LONG NO-UNDO.
  3075. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3076. END.
  3077. /*
  3078. * VpWebPrintDoc - printdoc to webpage
  3079. * 07.01.2000 jc
  3080. */
  3081. PROCEDURE VpWebPrintDoc EXTERNAL "viper32.dll" CDECL :
  3082. DEF INPUT PARAM p-from AS SHORT NO-UNDO.
  3083. DEF INPUT PARAM p-to AS SHORT NO-UNDO.
  3084. DEF INPUT PARAM p-prt AS CHAR NO-UNDO.
  3085. /* bug in 10.0B */
  3086. DEF INPUT-OUTPUT PARAM fOut AS CHAR NO-UNDO.
  3087. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3088. END.
  3089. /*
  3090. * VpSetLandscapePS - set landscape flag in a PS file
  3091. * 28.06.2000 jc
  3092. */
  3093. PROCEDURE VpSetLandscapePS EXTERNAL "viper32.dll" CDECL :
  3094. DEF INPUT PARAM p-filePS AS CHAR NO-UNDO.
  3095. DEF INPUT PARAM p-force AS SHORT NO-UNDO.
  3096. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3097. END.
  3098. /*
  3099. * VpSetCellLineSpacing - set the spacing between the lines of a cell
  3100. * 10.07.2000 jc
  3101. */
  3102. PROCEDURE VpSetCellLineSpacing EXTERNAL "viper32.dll" CDECL :
  3103. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3104. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3105. DEF INPUT PARAM p-spass AS DOUBLE NO-UNDO.
  3106. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3107. END.
  3108. /*
  3109. * VpGetCellWidth - get the width of a cell.
  3110. * 10.07.2000 jc
  3111. */
  3112. PROCEDURE VpGetCellWidth EXTERNAL "viper32.dll" CDECL :
  3113. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3114. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3115. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3116. END.
  3117. /*
  3118. * VpPS2PDF - to avoid problems with the length of the commandline and
  3119. * the size of the environment we have to call ghostscript
  3120. * from the dll
  3121. * 17.8.2000 jc
  3122. */
  3123. PROCEDURE VpPS2PDF EXTERNAL "viper32.dll" CDECL :
  3124. DEF INPUT PARAM p-gsexe AS CHAR NO-UNDO.
  3125. DEF INPUT PARAM p-gsdir AS CHAR NO-UNDO.
  3126. DEF INPUT PARAM p-fontpath AS CHAR NO-UNDO.
  3127. DEF INPUT PARAM p-options AS CHAR NO-UNDO.
  3128. DEF INPUT PARAM p-options2 AS CHAR NO-UNDO.
  3129. DEF INPUT PARAM p-device AS CHAR NO-UNDO.
  3130. DEF INPUT PARAM p-infile AS CHAR NO-UNDO.
  3131. DEF INPUT PARAM p-outfile AS CHAR NO-UNDO.
  3132. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3133. END.
  3134. /*
  3135. * VpDumpCellReadable - a pure debugging function, that dumps the
  3136. * parsed cell text in a readable format into a given file
  3137. * pars: cellname
  3138. * groupname
  3139. * filename
  3140. * filemode: "w"=write, delete old file, "a"=append to exosting file
  3141. *
  3142. * 01.11.2000 jc
  3143. */
  3144. PROCEDURE VpDumpCellReadable EXTERNAL "viper32.dll" CDECL :
  3145. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3146. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3147. DEF INPUT PARAM p-fname AS CHAR NO-UNDO.
  3148. DEF INPUT PARAM p-mode AS CHAR NO-UNDO.
  3149. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3150. END.
  3151. /*
  3152. * VpSetCellHeight - Set the height of a cell without touching its position
  3153. * should have been done much earlier :-)
  3154. *
  3155. * 15.02.2001 jc
  3156. */
  3157. PROCEDURE VpSetCellHeight EXTERNAL "viper32.dll" CDECL :
  3158. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3159. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3160. DEF INPUT PARAM p-height AS LONG NO-UNDO.
  3161. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3162. END.
  3163. /*
  3164. * VpSetPaperSize - Set the current paper size
  3165. *
  3166. * 03.07.2001 jc
  3167. */
  3168. PROCEDURE VpSetPaperSize EXTERNAL "viper32.dll" CDECL :
  3169. DEF INPUT PARAM p-width AS LONG NO-UNDO.
  3170. DEF INPUT PARAM p-height AS LONG NO-UNDO.
  3171. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3172. END.
  3173. /*
  3174. * VpSetDocTitle - Set the current documents title
  3175. *
  3176. * 04.10.2001 jc
  3177. */
  3178. PROCEDURE VpSetDocTitle EXTERNAL "viper32.dll" CDECL :
  3179. DEF INPUT PARAM p-title AS CHAR NO-UNDO.
  3180. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3181. END.
  3182. /*
  3183. * export xslfo
  3184. *
  3185. * 23.08.02 jc
  3186. */
  3187. PROCEDURE VpExportDoc EXTERNAL "viper32.dll" CDECL :
  3188. DEF INPUT PARAM p-from AS LONG NO-UNDO.
  3189. DEF INPUT PARAM p-to AS LONG NO-UNDO.
  3190. DEF INPUT PARAM p-fnam AS CHAR NO-UNDO.
  3191. DEF INPUT PARAM p-type AS CHAR NO-UNDO.
  3192. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3193. END.
  3194. /*
  3195. * Create a persistent preview, that outlives the DLL/viper handle
  3196. *
  3197. * 27.02.03 jc
  3198. */
  3199. PROCEDURE VpShowDoc EXTERNAL "viper32.dll" CDECL :
  3200. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3201. END.
  3202. /*
  3203. * Return the current preview status (hidden/visible)
  3204. *
  3205. * 15.03.03 jc
  3206. */
  3207. PROCEDURE VpGetPreviewStatus EXTERNAL "viper32.dll" CDECL :
  3208. DEF INPUT PARAM p-wait AS SHORT NO-UNDO.
  3209. DEF RETURN PARAM p-status AS SHORT NO-UNDO.
  3210. END.
  3211. /*
  3212. * Get the current default printer
  3213. *
  3214. * this is no official part of the API
  3215. * 12.06.03 jc
  3216. */
  3217. PROCEDURE _VpGetDefaultPrinter EXTERNAL "viper32.dll" CDECL :
  3218. DEF RETURN PARAMETER p-name AS MEMPTR NO-UNDO.
  3219. END.
  3220. /*
  3221. * Set the default printer
  3222. *
  3223. * this is no official part of the API
  3224. * 12.06.03 jc
  3225. */
  3226. PROCEDURE _VpSetDefaultPrinter EXTERNAL "viper32.dll" CDECL :
  3227. DEF INPUT PARAMETER p-name AS CHAR.
  3228. DEF RETURN PARAMETER p-ret AS LONG.
  3229. END.
  3230. /*
  3231. * Set a codepage for the given cell
  3232. * this is only preliminary
  3233. * 12.11.04 jc
  3234. */
  3235. PROCEDURE VpSetCellCodePage EXTERNAL "viper32.dll" CDECL :
  3236. DEF INPUT PARAM p-cell AS CHAR NO-UNDO. /* always case-sensitive */
  3237. DEF INPUT PARAM p-group AS CHAR NO-UNDO. /* dito */
  3238. DEF INPUT PARAM p-CP AS CHAR NO-UNDO.
  3239. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3240. END.
  3241. /*
  3242. * Dump the current contents of the document
  3243. * currently this only dumps the cells (see OnePage::DebugDumpToFile)
  3244. * 21.02.05 jc
  3245. */
  3246. PROCEDURE VpDebugDumpDocument EXTERNAL "viper32.dll" CDECL :
  3247. DEF INPUT PARAM p-fnam AS CHAR NO-UNDO.
  3248. DEF RETURN PARAM p-err AS LONG NO-UNDO.
  3249. END.
  3250. /*
  3251. * VpSetPageVPos: set the current position for the current page
  3252. *
  3253. * 25.04.05 jc
  3254. */
  3255. PROCEDURE VpSetPageVPos EXTERNAL "viper32.dll" CDECL :
  3256. DEF INPUT PARAM p-pos AS LONG NO-UNDO.
  3257. DEF RETURN PARAM p-err AS LONG NO-UNDO.
  3258. END.
  3259. /*
  3260. * VpSetDocAttrib: set attributes for the document
  3261. * e.g. CREATEMODE
  3262. *
  3263. * 03.05.05 jc
  3264. */
  3265. PROCEDURE VpSetDocAttrib EXTERNAL "viper32.dll" CDECL :
  3266. DEF INPUT PARAM p-attriblist AS CHAR NO-UNDO.
  3267. DEF RETURN PARAM p-err AS LONG NO-UNDO.
  3268. END.
  3269. /*
  3270. * _VpSetGsParams
  3271. * set ghostscript parameters. this is used for the
  3272. * printPDF button of the preview and should be called on
  3273. * startup of viper
  3274. * 03.05.05 jc
  3275. */
  3276. PROCEDURE _VpSetGsParams EXTERNAL "viper32.dll" CDECL :
  3277. DEF INPUT PARAM p-gsexe AS CHAR NO-UNDO.
  3278. DEF INPUT PARAM p-gsdir AS CHAR NO-UNDO.
  3279. DEF INPUT PARAM p-fontpath AS CHAR NO-UNDO.
  3280. DEF INPUT PARAM p-options AS CHAR NO-UNDO.
  3281. DEF INPUT PARAM p-options2 AS CHAR NO-UNDO.
  3282. DEF INPUT PARAM p-device AS CHAR NO-UNDO.
  3283. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3284. END.
  3285. /*
  3286. * VpGetCellTextHeight
  3287. * returns the height the whole text of the cell would need
  3288. * to be displayed. this is identical to getcellheight for cell
  3289. * that automatically resize
  3290. * 04.05.05 jc
  3291. */
  3292. PROCEDURE VpGetCellTextHeight EXTERNAL "viper32.dll" CDECL :
  3293. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3294. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3295. DEF RETURN PARAM p-height AS SHORT NO-UNDO.
  3296. END.
  3297. /*
  3298. * VpGetCellTextWidth
  3299. * returns the width the cells' text needs to display
  3300. * without more linebreaking, than currently used
  3301. * 04.05.05 jc
  3302. */
  3303. PROCEDURE VpGetCellTextWidth EXTERNAL "viper32.dll" CDECL :
  3304. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3305. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3306. DEF RETURN PARAM p-height AS SHORT NO-UNDO.
  3307. END.
  3308. /*
  3309. * VpSetGraphObj
  3310. * sets group based grahical objects: BMP, RECT, etc.
  3311. * 13.05.05 jc
  3312. */
  3313. PROCEDURE VpSetGraphObj EXTERNAL "viper32.dll" CDECL :
  3314. DEF INPUT PARAM p-objnam AS CHAR NO-UNDO.
  3315. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3316. DEF INPUT PARAM p-type AS CHAR NO-UNDO.
  3317. DEF INPUT PARAM p-x AS LONG NO-UNDO.
  3318. DEF INPUT PARAM p-y AS LONG NO-UNDO.
  3319. DEF INPUT PARAM p-w AS LONG NO-UNDO.
  3320. DEF INPUT PARAM p-h AS LONG NO-UNDO.
  3321. DEF INPUT PARAM p-attribs AS CHAR NO-UNDO.
  3322. DEF RETURN PARAM p-err AS LONG NO-UNDO.
  3323. END PROCEDURE.
  3324. /*
  3325. * VpSetGroupAttr
  3326. * sets group attributes from a key/value list
  3327. * 26.05.05 jc
  3328. */
  3329. PROCEDURE VpSetGroupAttr EXTERNAL "viper32.dll" CDECL :
  3330. DEFINE INPUT PARAM p-group AS CHAR NO-UNDO.
  3331. DEFINE INPUT PARAM p-attr AS CHAR NO-UNDO.
  3332. DEFINE RETURN PARAM p-err AS LONG NO-UNDO.
  3333. END PROCEDURE.
  3334. /*
  3335. * VpSetGraphObjAttr
  3336. * sets GraphObj attributes from a key/value list
  3337. * 27.05.05 jc
  3338. */
  3339. PROCEDURE VpSetGraphObjAttr EXTERNAL "viper32.dll" CDECL :
  3340. DEFINE INPUT PARAM p-object AS CHAR NO-UNDO.
  3341. DEFINE INPUT PARAM p-group AS CHAR NO-UNDO.
  3342. DEFINE INPUT PARAM p-attr AS CHAR NO-UNDO.
  3343. DEFINE RETURN PARAM p-err AS LONG NO-UNDO.
  3344. END PROCEDURE.
  3345. /*
  3346. * VpGetGroupHPos
  3347. * retrieves the horizontal position of the bounding rectangle of a group
  3348. * 03.08.06 jc
  3349. */
  3350. PROCEDURE VpGetGroupHPos EXTERNAL "viper32.dll" CDECL :
  3351. DEFINE INPUT PARAM p-group AS CHAR NO-UNDO.
  3352. DEFINE RETURN PARAM p-err AS LONG NO-UNDO.
  3353. END PROCEDURE.
  3354. /*
  3355. * VpGetGroupWidth
  3356. * retrieves the width of the bounding rectangle of a group
  3357. * 03.08.06 jc
  3358. */
  3359. PROCEDURE VpGetGroupWidth EXTERNAL "viper32.dll" CDECL :
  3360. DEFINE INPUT PARAM p-group AS CHAR NO-UNDO.
  3361. DEFINE RETURN PARAM p-err AS LONG NO-UNDO.
  3362. END PROCEDURE.
  3363. /*
  3364. * VpGetGroupObjects
  3365. * retrieve a comma separated list of the objects in the given group
  3366. * 04.05.07 jc
  3367. */
  3368. PROCEDURE VpGetGroupObjects EXTERNAL "viper32.dll" CDECL :
  3369. DEFINE INPUT PARAM p-group AS CHAR NO-UNDO.
  3370. DEFINE INPUT PARAM p-type AS CHAR NO-UNDO.
  3371. DEFINE RETURN PARAM p-res AS MEMPTR NO-UNDO.
  3372. END PROCEDURE.
  3373. /*
  3374. * VpSetCellRotation
  3375. * sets the rotation angle for the cell's text.
  3376. * counterclockwise
  3377. * june/july 2011 jc
  3378. */
  3379. PROCEDURE VpSetCellRotation EXTERNAL "viper32.dll" CDECL :
  3380. DEFINE INPUT PARAM p-object AS CHAR NO-UNDO.
  3381. DEFINE INPUT PARAM p-group AS CHAR NO-UNDO.
  3382. DEFINE INPUT PARAM p-angle AS DOUBLE NO-UNDO.
  3383. DEFINE RETURN PARAM p-err AS LONG NO-UNDO.
  3384. END.
  3385. /*
  3386. * VpSetCellFont
  3387. * set the cell font. supersedes VpSetFont
  3388. * Aug 15, 2011 jc
  3389. */
  3390. PROCEDURE VpSetCellFont EXTERNAL "viper32.dll" CDECL :
  3391. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3392. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3393. DEF INPUT PARAM p-height AS FLOAT NO-UNDO.
  3394. DEF INPUT PARAM p-width AS FLOAT NO-UNDO.
  3395. DEF INPUT PARAM p-format AS SHORT NO-UNDO. /* 1=italic,2=underline,4=strikeout,8=bold */
  3396. DEF INPUT PARAM p-family AS SHORT NO-UNDO. /* font-family (0 if no altern.) */
  3397. DEF INPUT PARAM p-fontName AS CHAR NO-UNDO. /* e.g. "Arial", "TimesNewRoman",... */
  3398. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3399. END.
  3400. PROCEDURE VpSetTempDir EXTERNAL "viper32.dll" CDECL :
  3401. DEFINE INPUT PARAMETER p-tmpdir AS CHARACTER NO-UNDO.
  3402. DEF RETURN PARAM p-err AS SHORT NO-UNDO.
  3403. END.
  3404. /*
  3405. Name : Vpb.i (old viper.p)
  3406. Purpose:
  3407. Copyright:
  3408. Author:
  3409. Version:
  3410. changes:
  3411. * 24.02.03 multitasking intervall removed
  3412. * 06.10.04 OUTPUT changed to INPUT-OUTPUT due to 10.B 4GL Issue with DLL calls
  3413. * 25.04.05 jc: vpr_setPageVPos
  3414. * 03.05.05 jc: vpr_SetDocAttrib
  3415. * xx.05.05 jc: vpr_FetchCellTextWidth vpr_FetchCellTextHeight
  3416. * 13.05.05 jc: vpr_SetGraphObj
  3417. * 26.05.05 jc: vpr_setGroupAttr
  3418. */
  3419. /* The Delimiter. */
  3420. DEF VAR l-Delimiter AS CHAR NO-UNDO INIT "".
  3421. /* A flag indicating if we are in landscape mode */
  3422. DEF VAR l-printorientation AS INT NO-UNDO INIT 0.
  3423. /* Has/is viper succesfully loaded. */
  3424. DEF VAR loaded AS INT NO-UNDO.
  3425. /* Pointer to viper dll. Used to kill dll. */
  3426. DEF VAR h-dll AS INT NO-UNDO.
  3427. /*
  3428. * variables with values from the viper.ini
  3429. */
  3430. DEF NEW SHARED VAR gvp_gsdir AS CHAR INIT "viper\gs" /*".\gs" */ .
  3431. DEF NEW SHARED VAR gvp_gsexe AS CHAR INIT "viper\gs\gswin32c.exe" /*".\gs\gswin32c.exe */ .
  3432. DEF NEW SHARED VAR gvp_gslib AS CHAR INIT "viper\gs" /*".\gs" */ .
  3433. DEF NEW SHARED VAR gvp_gsfontpath AS CHAR INIT "" /*".\gs" */ .
  3434. DEF NEW SHARED VAR gvp_webprt AS CHAR INIT "VIPER" /*"PS-Printer" */ .
  3435. DEF NEW SHARED VAR gvp_WEBPRTACTIVE AS CHAR INIT "OFF" /*"OFF" */ .
  3436. DEF NEW SHARED VAR gvp_WEBTEMPDIR AS CHAR INIT "vpwebtmp\" /*"vpwebtmp\" */ .
  3437. DEF NEW SHARED VAR gvp_SRVTEMPDIR AS CHAR INIT "/vpwebtmp/" /*"/vpwebtmp/" */ .
  3438. /******* Trigger ********/
  3439. ON CLOSE OF THIS-PROCEDURE RUN vpr_ViperOff.
  3440. /******* Main Block **********/
  3441. IF THIS-PROCEDURE:PERSISTENT THEN RUN vpr_ViperOn.
  3442. /******* Viper-Wrapper ******************/
  3443. /* Set friendly multitasking, load library and */
  3444. PROCEDURE vpr_ViperOn :
  3445. FILE-INFO:FILE-NAME = "viper\viper32.dll".
  3446. RUN LoadLibraryA(IF FILE-INFO:FULL-PATHNAME <> ? THEN FILE-INFO:FULL-PATHNAME ELSE "viper\viper32.dll", OUTPUT h-dll).
  3447. /*
  3448. RUN LoadLibraryA(IF SEARCH({&VDLL}) <> ? THEN SEARCH({&VDLL}) ELSE {&VDLL}, OUTPUT h-dll).
  3449. */
  3450. /* Startet die Exe-Datei. */
  3451. RUN StartViper(OUTPUT loaded).
  3452. /* Wurde Viper nicht ordentlich geladen, so wird eine 0 zurueckgegeben. */
  3453. IF loaded = 0 THEN
  3454. DO:
  3455. MESSAGE "Viper could not be started successfully!"
  3456. VIEW-AS ALERT-BOX.
  3457. RUN FreeLibrary(h-dll).
  3458. DELETE PROCEDURE THIS-PROCEDURE.
  3459. END.
  3460. RUN vpr_SetDelimiter(CHR(1)).
  3461. RUN vpr_loadini.
  3462. RUN vpr_ResetDoc.
  3463. DEF VAR p-dummy AS INT NO-UNDO.
  3464. RUN _VpSetGsParams(gvp_GSEXE,gvp_GSDIR,gvp_GSFONTPATH,
  3465. "-dBATCH -dNOPAUSE -dQUIET", "",
  3466. "pdfwrite", OUTPUT p-dummy).
  3467. /* we ignore errors returned by the dll (actually there are none, it always returns 0) */
  3468. END. /* of viperon */
  3469. /* Leave viper */
  3470. PROCEDURE vpr_ViperOff :
  3471. RUN CloseViper.
  3472. RUN FreeLibrary(h-dll).
  3473. DELETE PROCEDURE THIS-PROCEDURE.
  3474. END.
  3475. /*********** read Viper INI *******************/
  3476. PROCEDURE vpr_loadini:
  3477. DEF VAR lp-cfgfile AS CHAR NO-UNDO.
  3478. DEF VAR lp-line AS CHAR NO-UNDO.
  3479. lp-cfgfile = SEARCH("viper.ini").
  3480. IF lp-cfgfile = ? THEN lp-cfgfile = SEARCH("viper/viper.ini").
  3481. IF lp-cfgfile <> ? THEN
  3482. DO:
  3483. INPUT FROM VALUE(lp-cfgfile).
  3484. REPEAT:
  3485. IMPORT UNFORMATTED lp-line.
  3486. IF TRIM(ENTRY(1,lp-line," ")) BEGINS ";" OR NUM-ENTRIES(lp-line,"=") <> 2 THEN NEXT.
  3487. CASE TRIM(ENTRY(1,lp-line,"=")):
  3488. WHEN "VP_GSDIR" THEN
  3489. gvp_gsdir = TRIM(ENTRY(2,lp-line,"=")).
  3490. WHEN "VP_GSEXE" THEN
  3491. gvp_gsexe = REPLACE(TRIM(ENTRY(2,lp-line,"=")),"%VP_GSDIR%", gvp_gsdir).
  3492. WHEN "VP_GSLIB" THEN
  3493. gvp_gslib = REPLACE(TRIM(ENTRY(2,lp-line,"=")),"%VP_GSDIR%", gvp_gsdir).
  3494. WHEN "VP_FONTPATH" THEN
  3495. gvp_gsfontpath = REPLACE(TRIM(ENTRY(2,lp-line,"=")),"%VP_GSDIR%", gvp_gsdir).
  3496. WHEN "WEBPRT" THEN
  3497. gvp_webprt = REPLACE(TRIM(ENTRY(2,lp-line,"=")),'"','').
  3498. WHEN "VP_WEBPRTACTIVE" THEN
  3499. gvp_WEBPRTACTIVE = TRIM(ENTRY(2,lp-line,"=")).
  3500. WHEN "VP_WEBTEMPDIR " THEN
  3501. gvp_WEBTEMPDIR = TRIM(ENTRY(2,lp-line,"=")).
  3502. WHEN "VP_SRVTEMPDIR " THEN
  3503. gvp_SRVTEMPDIR = TRIM(ENTRY(2,lp-line,"=")).
  3504. END CASE.
  3505. END. /* repeat */
  3506. IF NOT SESSION:BATCH-MODE THEN
  3507. DO:
  3508. INPUT FROM TERMINAL.
  3509. END.
  3510. ELSE
  3511. DO:
  3512. INPUT CLOSE.
  3513. END.
  3514. END. /* IF <> ? */
  3515. /* dll does not know about PROPATH */
  3516. FILE-INFO:FILE-NAME = gvp_gsdir.
  3517. IF FILE-INFO:FULL-PATHNAME <> ? THEN gvp_gsdir = FILE-INFO:FULL-PATHNAME.
  3518. FILE-INFO:FILE-NAME = gvp_gsexe.
  3519. IF FILE-INFO:FULL-PATHNAME <> ? THEN gvp_gsexe = FILE-INFO:FULL-PATHNAME.
  3520. FILE-INFO:FILE-NAME = gvp_gslib.
  3521. IF FILE-INFO:FULL-PATHNAME <> ? THEN gvp_gslib = FILE-INFO:FULL-PATHNAME.
  3522. FILE-INFO:FILE-NAME = gvp_gsfontpath.
  3523. IF FILE-INFO:FULL-PATHNAME <> ? THEN gvp_gsfontpath = FILE-INFO:FULL-PATHNAME.
  3524. FILE-INFO:FILE-NAME = ".".
  3525. END PROCEDURE.
  3526. /***************************
  3527. * RTF processing commands *
  3528. ***************************/
  3529. /* the declarations needed for embedded
  3530. formatting at this point ...
  3531. 06.02.98 jc
  3532. 24.09.98 jc: rtf agin! */
  3533. /* takes string + attributes and returns rtf-formatted string */
  3534. PROCEDURE vpr_Asc2RTF :
  3535. DEF INPUT PARAM p-InString AS CHAR NO-UNDO.
  3536. DEF INPUT PARAM p-Attribs AS CHAR NO-UNDO.
  3537. DEF OUTPUT PARAM p-OutString AS CHAR NO-UNDO.
  3538. DEF VAR lt-opt AS CHAR NO-UNDO INIT "".
  3539. DEF VAR lt-unopt AS CHAR NO-UNDO INIT "".
  3540. DEF VAR lt-c AS CHAR NO-UNDO INIT "".
  3541. DEF VAR lt-i AS INT NO-UNDO INIT -1.
  3542. /* not tricky, but it works */
  3543. IF (LOOKUP("bold",p-Attribs) > 0) THEN
  3544. DO:
  3545. lt-opt = lt-opt + "\b ".
  3546. lt-unopt = lt-unopt + "\b0 ".
  3547. END.
  3548. IF (LOOKUP("italic",p-Attribs) > 0) THEN
  3549. DO:
  3550. lt-opt = lt-opt + "\i ".
  3551. lt-unopt = lt-unopt + "\i0 ".
  3552. END.
  3553. IF (LOOKUP("underline",p-Attribs) > 0) THEN
  3554. DO:
  3555. lt-opt = lt-opt + "\ul ".
  3556. lt-unopt = lt-unopt + "\ul0 ".
  3557. END.
  3558. IF (LOOKUP("strike",p-Attribs) > 0) THEN
  3559. DO:
  3560. lt-opt = lt-opt + "\s ".
  3561. lt-unopt = lt-unopt + "\s0 ".
  3562. END.
  3563. /* keep this order, please */
  3564. /* not needed/used currently... 6.2.98 (jc) */
  3565. p-InString = REPLACE(p-InString,"\","\\").
  3566. p-InString = REPLACE(p-InString,CHR(9),"\tab ").
  3567. p-InString = REPLACE(p-InString,CHR(13) + CHR(10),"\par ").
  3568. p-InString = REPLACE(p-InString,CHR(13),"\par ").
  3569. p-InString = REPLACE(p-InString,CHR(10),"\par ").
  3570. p-InString = REPLACE(p-InString,"~{","\~{").
  3571. p-InString = REPLACE(p-InString,"~}","\~}").
  3572. p-OutString = lt-opt + p-InString + lt-unopt. /* + {&RPlain}. */ /* options + text + 'reset' */
  3573. END.
  3574. /*********************************************
  3575. * Creation and deletion of cells and groups *
  3576. ********************************************/
  3577. /* create a cell in a group */
  3578. PROCEDURE vpr_DefCell:
  3579. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3580. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3581. DEF VAR p-err AS INT NO-UNDO.
  3582. RUN VpSetCell (CAPS(p-cell), CAPS(p-group), "Create":U, OUTPUT p-err).
  3583. IF p-err <> 0 THEN RETURN ERROR "DefCell: Error".
  3584. END.
  3585. /* Delete a cell */
  3586. PROCEDURE vpr_DelCell:
  3587. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3588. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3589. DEF VAR p-err AS INT NO-UNDO.
  3590. RUN VpSetCell (CAPS(p-cell), CAPS(p-group), "Destroy", OUTPUT p-err).
  3591. IF p-err <> 0 THEN RETURN ERROR "DelCell: Error".
  3592. END.
  3593. /*************************************
  3594. * Setting cell and group attributes *
  3595. *************************************/
  3596. /* Set cell attributes */
  3597. PROCEDURE vpr_SetCellAttrib:
  3598. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3599. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3600. DEF INPUT PARAM p-attribs AS CHAR NO-UNDO.
  3601. DEF VAR p-err AS INT NO-UNDO INIT 0.
  3602. DEF VAR c_entry AS CHAR NO-UNDO.
  3603. DEF VAR ii AS INT NO-UNDO.
  3604. DEF VAR ij AS INT NO-UNDO.
  3605. ij = NUM-ENTRIES(p-attribs).
  3606. DO ii = 1 TO ij:
  3607. c_entry = ENTRY(ii,p-attribs).
  3608. IF TRIM(ENTRY(1,c_entry,"=")) = "RTF" THEN
  3609. DO:
  3610. IF TRIM(ENTRY(2,c_entry,"=")) = "ON" THEN
  3611. RUN VpSetCellRTF (CAPS(p-cell), CAPS(p-group), 1, OUTPUT p-err).
  3612. ELSE
  3613. RUN VpSetCellRTF (CAPS(p-cell), CAPS(p-group), 0, OUTPUT p-err).
  3614. END.
  3615. END.
  3616. IF p-err <> 0 THEN RETURN ERROR "SetCellAttrib: Error".
  3617. END.
  3618. /*
  3619. * SetCellLineSpacing - Set the space between lines
  3620. */
  3621. PROCEDURE vpr_SetCellLineSpacing:
  3622. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3623. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3624. DEF INPUT PARAM p-space AS DEC NO-UNDO.
  3625. DEF VAR p-err AS INT NO-UNDO INIT 0.
  3626. RUN VpSetCellLineSpacing (CAPS(p-cell), CAPS(p-group), p-space, OUTPUT p-err).
  3627. IF p-err <> 0 THEN RETURN ERROR "SetCellLineSpacing: Error".
  3628. END.
  3629. /* set RTF */
  3630. PROCEDURE vpr_SetCellRTF:
  3631. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3632. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3633. DEF INPUT PARAM p-attrib AS CHAR NO-UNDO.
  3634. DEF VAR p-err AS INT NO-UNDO INIT 0.
  3635. p-attrib=TRIM(CAPS(p-attrib)).
  3636. IF p-attrib = "ON" OR p-attrib = "TRUE" OR p-attrib = "YES" OR p-attrib = "RTF" THEN
  3637. DO:
  3638. RUN VpSetCellRTF (CAPS(p-cell), CAPS(p-group), 1, OUTPUT p-err).
  3639. END.
  3640. ELSE
  3641. DO:
  3642. RUN VpSetCellRTF (CAPS(p-cell), CAPS(p-group), 0, OUTPUT p-err).
  3643. END.
  3644. IF p-err <> 0 THEN RETURN ERROR "SetCellRTF: Error".
  3645. END.
  3646. /* Set the text value of a cell */
  3647. PROCEDURE vpr_SetCellText:
  3648. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3649. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3650. DEF INPUT PARAM p-text AS CHAR NO-UNDO. /* No-formatted text (s.t.c.) */
  3651. DEF VAR p-err AS INT NO-UNDO.
  3652. RUN VpText (CAPS(p-cell), CAPS(p-group), p-text, OUTPUT p-err).
  3653. IF p-err <> 0 THEN RETURN ERROR "SetCellText: Error".
  3654. END.
  3655. /* Set the text value of a cell */
  3656. PROCEDURE vpr_SetCellLongText:
  3657. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3658. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3659. DEF INPUT PARAM p-text AS LONGCHAR NO-UNDO. /* No-formatted text (s.t.c.) */
  3660. DEF VAR p-err AS INT NO-UNDO.
  3661. RUN VpText (CAPS(p-cell), CAPS(p-group), p-text, OUTPUT p-err).
  3662. IF p-err <> 0 THEN RETURN ERROR "SetCellLongText: Error".
  3663. END.
  3664. /* SetDelimiter: only here because of its close connexion to SetGroupText */
  3665. PROCEDURE vpr_SetDelimiter:
  3666. DEF INPUT PARAM p-del AS CHAR NO-UNDO.
  3667. DEF VAR p-err AS INT NO-UNDO.
  3668. RUN VpSetDelimiter IN THIS-PROCEDURE (INPUT p-del, OUTPUT p-err) NO-ERROR.
  3669. IF p-err <> 0 THEN RETURN ERROR "SetDelimiter: Error".
  3670. /* xxx */
  3671. l-Delimiter = p-Del.
  3672. END. /* of setdelimiter */
  3673. /* Set the text value of a cell */
  3674. PROCEDURE vpr_SetGroupText:
  3675. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3676. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  3677. DEF INPUT PARAM p-texts AS CHAR NO-UNDO. /* No-formatted text (s.t.c.) */
  3678. DEF VAR p-err AS INT NO-UNDO.
  3679. RUN VpSetGroupText (CAPS(p-group), CAPS(p-cells), p-texts, OUTPUT p-err).
  3680. IF p-err <> 0 THEN RETURN ERROR "SetGroupText: Error".
  3681. END.
  3682. /* Position a cell (set size/place) (per 0.1 mm) */
  3683. PROCEDURE vpr_SetCellPos:
  3684. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3685. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3686. DEF INPUT PARAM p-x AS INT NO-UNDO.
  3687. DEF INPUT PARAM p-y AS INT NO-UNDO.
  3688. DEF INPUT PARAM p-width AS INT NO-UNDO.
  3689. DEF INPUT PARAM p-height AS INT NO-UNDO.
  3690. DEF VAR p-err AS INT NO-UNDO.
  3691. RUN VpSetRect(CAPS(p-cell),CAPS(p-group),p-x,p-y,p-width,p-height, OUTPUT p-err).
  3692. IF p-err <>0 THEN
  3693. DO:
  3694. /* DISPLAY "FEHLER: ".
  3695. DISPLAY STRING(p-err).
  3696. */
  3697. RETURN ERROR "SetCellPos: Error".
  3698. END.
  3699. END.
  3700. /* Set a cells height (per 0.1 mm) */
  3701. PROCEDURE vpr_SetCellHeight:
  3702. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3703. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3704. DEF INPUT PARAM p-height AS INT NO-UNDO.
  3705. DEF VAR p-err AS INT NO-UNDO.
  3706. RUN VpSetCellHeight(CAPS(p-cell),CAPS(p-group),p-height, OUTPUT p-err).
  3707. IF p-err <>0 THEN
  3708. DO:
  3709. RETURN ERROR "SetCellHeight: Error".
  3710. END.
  3711. END.
  3712. /* set font in cell
  3713. ke, 18.04.97; No more font family. Set to 0. */
  3714. PROCEDURE vpr_SetCellFont_OLD:
  3715. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3716. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3717. DEF INPUT PARAM p-height AS INT NO-UNDO.
  3718. DEF INPUT PARAM p-width AS INT NO-UNDO.
  3719. /* use a list of italic,underline,strikeout,bold */
  3720. DEF INPUT PARAM p-format AS CHAR NO-UNDO.
  3721. /* e.g. "Arial", "TimesNewRoman",... */
  3722. DEF INPUT PARAM p-fontName AS CHAR NO-UNDO.
  3723. DEF VAR p-err AS INT NO-UNDO.
  3724. DEF VAR l-Format AS INT NO-UNDO.
  3725. RUN vpr_CalcFormat (p-Format, OUTPUT l-Format).
  3726. RUN VpSetFont(CAPS(p-cell), CAPS(p-group),
  3727. p-height, p-width, l-format,
  3728. 0, p-fontName, OUTPUT p-err).
  3729. IF p-err <> 0 THEN RETURN ERROR "SetCellFont: Error".
  3730. END.
  3731. /* set font in cell
  3732. * new version using decimals for height and width
  3733. * Aug 15, 2011 jc
  3734. */
  3735. PROCEDURE vpr_SetCellFont:
  3736. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3737. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3738. DEF INPUT PARAM p-height AS DEC NO-UNDO.
  3739. DEF INPUT PARAM p-width AS DEC NO-UNDO.
  3740. /* use a list of italic,underline,strikeout,bold */
  3741. DEF INPUT PARAM p-format AS CHAR NO-UNDO.
  3742. /* e.g. "Arial", "TimesNewRoman",... */
  3743. DEF INPUT PARAM p-fontName AS CHAR NO-UNDO.
  3744. DEF VAR p-err AS INT NO-UNDO.
  3745. DEF VAR l-Format AS INT NO-UNDO.
  3746. RUN vpr_CalcFormat (p-Format, OUTPUT l-Format).
  3747. RUN VpSetCellFont(CAPS(p-cell), CAPS(p-group),
  3748. p-height, p-width, l-format,
  3749. 0, p-fontName, OUTPUT p-err).
  3750. IF p-err <> 0 THEN RETURN ERROR "SetCellFont: Error".
  3751. END.
  3752. /*
  3753. * set the codepage for the cell
  3754. * jc 12.11.04
  3755. */
  3756. PROCEDURE vpr_SetCellCodePage:
  3757. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3758. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3759. DEF INPUT PARAM p-CP AS CHAR NO-UNDO. /* No-formatted text (s.t.c.) */
  3760. DEF VAR p-res AS INT NO-UNDO.
  3761. RUN VpSetCellCodePage(CAPS(p-cell), CAPS(p-group), CAPS(p-CP), OUTPUT p-res).
  3762. END.
  3763. /* Set the resize-flag of cell (increasing cell = yes)
  3764. Parameter p-dynamic set to logical parameter. */
  3765. PROCEDURE vpr_SetCellAutoResize:
  3766. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3767. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3768. /* 0 = static / 1 = dynamic cell */
  3769. DEF INPUT PARAM p-AutoRes AS CHAR NO-UNDO.
  3770. DEFINE VARIABLE p-err AS INT NO-UNDO.
  3771. DEFINE VARIABLE lp-autores AS LOG NO-UNDO.
  3772. CASE TRIM(p-AutoRes):
  3773. WHEN "TRUE" THEN
  3774. DO:
  3775. lp-AutoRes = TRUE.
  3776. END.
  3777. WHEN "YES" THEN
  3778. DO:
  3779. lp-AutoRes = TRUE.
  3780. END.
  3781. WHEN "ON" THEN
  3782. DO:
  3783. lp-AutoRes = TRUE.
  3784. END.
  3785. WHEN "1" THEN
  3786. DO:
  3787. lp-AutoRes = TRUE.
  3788. END.
  3789. WHEN "resize" THEN
  3790. DO:
  3791. lp-AutoRes = TRUE.
  3792. END.
  3793. OTHERWISE
  3794. DO:
  3795. lp-AutoRes = FALSE.
  3796. END.
  3797. END.
  3798. RUN VpSetResize(CAPS(p-cell), CAPS(p-group), IF lp-AutoRes THEN 1 ELSE 0, OUTPUT p-err).
  3799. IF p-err <> 0 THEN RETURN ERROR "SetCellAutoResize: Error".
  3800. END.
  3801. /* Set the wrap behavior of a cell. */
  3802. PROCEDURE vpr_SetCellWrap:
  3803. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3804. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3805. DEF INPUT PARAM p-Wrap AS CHAR NO-UNDO. /* wrap on/off, off is default */
  3806. DEFINE VARIABLE p-err AS INT NO-UNDO.
  3807. DEFINE VARIABLE lp-wrap AS LOG NO-UNDO.
  3808. lp-wrap = FALSE.
  3809. CASE TRIM(p-wrap):
  3810. WHEN "TRUE" THEN
  3811. DO:
  3812. lp-wrap = TRUE.
  3813. END.
  3814. WHEN "WRAP" THEN
  3815. DO:
  3816. lp-wrap = TRUE.
  3817. END.
  3818. WHEN "ON" THEN
  3819. DO:
  3820. lp-wrap = TRUE.
  3821. END.
  3822. END.
  3823. RUN VpSetCellWrap (CAPS(p-cell), CAPS(p-group), IF lp-Wrap THEN 1 ELSE 0, OUTPUT p-err).
  3824. IF p-err <> 0 THEN RETURN ERROR "SetCellWrap: Error".
  3825. END.
  3826. /* Set the Skip before and after a group.
  3827. The skip area is an invisible place to get better looking printouts. */
  3828. PROCEDURE vpr_SetGroupSkip:
  3829. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3830. DEF INPUT PARAM p-Point AS CHAR NO-UNDO.
  3831. DEF INPUT PARAM p-pre AS INT NO-UNDO.
  3832. DEF INPUT PARAM p-post AS INT NO-UNDO.
  3833. DEF VAR p-err AS INT NO-UNDO.
  3834. RUN VpSetGroupSkip (
  3835. CAPS(p-group),
  3836. p-pre,
  3837. p-post,
  3838. IF CAN-DO("Points,Point,Pt", p-Point) THEN 1 ELSE 0 , OUTPUT p-err).
  3839. IF p-err <> 0 THEN RETURN ERROR "SetGroupSkip: Error".
  3840. END.
  3841. /*
  3842. * helper to change the "align" value from strings to the number encoding used internally
  3843. * - SetCellAlign
  3844. *
  3845. * jc, 19.04.02
  3846. */
  3847. PROCEDURE vpr_my_changealign:
  3848. DEFINE INPUT PARAMETER p-char AS CHAR NO-UNDO.
  3849. DEFINE OUTPUT PARAMETER p-style AS INT NO-UNDO.
  3850. /*
  3851. * support old numbers...
  3852. */
  3853. p-style = INTEGER(p-char) NO-ERROR.
  3854. IF NOT ERROR-STATUS:ERROR THEN RETURN.
  3855. CASE TRIM(p-char):
  3856. WHEN "left" THEN
  3857. DO:
  3858. p-style = 1.
  3859. END.
  3860. WHEN "right" THEN
  3861. DO:
  3862. p-style = 2.
  3863. END.
  3864. WHEN "center" THEN
  3865. DO:
  3866. p-style = 3.
  3867. END.
  3868. WHEN "block" THEN
  3869. DO:
  3870. p-style = 4.
  3871. END.
  3872. WHEN "justify" THEN
  3873. DO:
  3874. p-style = 4.
  3875. END.
  3876. OTHERWISE
  3877. DO:
  3878. p-style = 0.
  3879. END.
  3880. END.
  3881. END.
  3882. /* Justifies in cell; s.docu for possible values */
  3883. PROCEDURE vpr_SetCellAlign:
  3884. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3885. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3886. /* 0, 1 = linksbuendig, 2 = rechtsbuendig, 3 = zentriert, 4 = blocksatz
  3887. (noch nicht implementiert) */
  3888. DEF INPUT PARAM p-type AS CHAR NO-UNDO.
  3889. DEFINE VARIABLE p-err AS INT NO-UNDO.
  3890. DEFINE VARIABLE lp-type AS INT NO-UNDO.
  3891. RUN vpr_my_changealign(p-type, OUTPUT lp-type).
  3892. RUN VpSetJustify(CAPS(p-cell), CAPS(p-group), lp-type, OUTPUT p-err).
  3893. IF p-err <> 0 THEN RETURN ERROR "SetCellAlign: Error".
  3894. END.
  3895. /* SetCellColor - sets the Colors and BkMode for Cells */
  3896. PROCEDURE vpr_SetCellColor:
  3897. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3898. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3899. DEF INPUT PARAM p-textc AS CHAR NO-UNDO.
  3900. DEF INPUT PARAM p-backc AS CHAR NO-UNDO.
  3901. DEF VAR i-textc AS INT NO-UNDO.
  3902. DEF VAR i-backc AS INT NO-UNDO.
  3903. DEF VAR p-err AS INT NO-UNDO.
  3904. IF p-backC = ""
  3905. OR p-BackC = ? THEN
  3906. DO:
  3907. RUN vpr_CalcCol (p-textc, OUTPUT i-textc).
  3908. RUN VpSetCellColor (CAPS(p-cell), CAPS(p-group), i-textc, 0, 0, OUTPUT p-err).
  3909. END.
  3910. ELSE
  3911. DO:
  3912. RUN vpr_CalcCol (p-textc, OUTPUT i-textc).
  3913. RUN vpr_CalcCol (p-backc, OUTPUT i-backc).
  3914. RUN VpSetCellColor (CAPS(p-cell), CAPS(p-group), i-textc, i-backc, 1, OUTPUT p-err).
  3915. END.
  3916. /* Error-Tracking. */
  3917. IF p-err <> 0 THEN RETURN ERROR "SetCellColor: Error".
  3918. END.
  3919. /* 19.1.98 */
  3920. /* SetGroupVPos - set the groups vertical position
  3921. 19.01.98 jpc
  3922. */
  3923. PROCEDURE vpr_SetGroupVPos:
  3924. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3925. DEF INPUT PARAM p-VPos AS INT NO-UNDO.
  3926. DEF VAR p-err AS INT NO-UNDO.
  3927. RUN VpSetGroupVPos(INPUT CAPS(p-group), INPUT p-VPos, OUTPUT p-err).
  3928. /* Error-Tracking. */
  3929. IF p-err <> 0 THEN RETURN ERROR "SetGroupVPos: Error".
  3930. END.
  3931. /* 24.09.98 */
  3932. /* SetGroupCellPositioning - sets how the cells are positioned on flushgroup
  3933. and setGroupVPos
  3934. 24.09.98 jpc
  3935. */
  3936. PROCEDURE vpr_SetGroupCellPositioning:
  3937. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3938. DEF INPUT PARAM p-Style AS INT NO-UNDO.
  3939. DEF VAR p-err AS INT NO-UNDO.
  3940. RUN VpSetGroupCellPositioning(INPUT CAPS(p-group), INPUT p-Style, OUTPUT p-err).
  3941. /* Error-Tracking. */
  3942. IF p-err <> 0 THEN RETURN ERROR "SetGroupCellPositioning: Error".
  3943. END.
  3944. /* SetCellSplit - sets if the cell should be able to have multiple
  3945. "instances", i.e. if a part of the cells text does not fit
  3946. into it, keep some or all of the text for the next "incarnation"
  3947. 13.11.98 jpc
  3948. */
  3949. PROCEDURE vpr_SetCellSplit:
  3950. DEF INPUT PARAM p-Group AS CHAR NO-UNDO.
  3951. DEF INPUT PARAM p-Cell AS CHAR NO-UNDO.
  3952. DEF INPUT PARAM p-split AS CHAR NO-UNDO.
  3953. DEF VAR p-err AS INT NO-UNDO.
  3954. DEF VAR lp-split AS INT NO-UNDO.
  3955. lp-split = 0.
  3956. p-split = CAPS(TRIM(p-split)).
  3957. IF p-split = "COPY" THEN lp-split=2.
  3958. IF p-split = "SPLIT" THEN lp-split=1.
  3959. IF p-split = "ON" THEN lp-split=1.
  3960. RUN VpSetCellSplit(CAPS(p-group), CAPS(p-cell), lp-split, OUTPUT p-err).
  3961. /* Error-Tracking */
  3962. IF p-err <> 0 THEN RETURN ERROR "SetCellSplit: Error".
  3963. END.
  3964. /****************************
  3965. * BUFFER STUFFA *
  3966. * 10.12.98 jc *
  3967. ****************************/
  3968. /* SetCellText: Set the buffer value of a cell
  3969. This overwrites the previous
  3970. buffer contents
  3971. 10.12.98 jc
  3972. */
  3973. PROCEDURE vpr_SetCellBuffer:
  3974. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3975. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3976. DEF INPUT PARAM p-text AS CHAR NO-UNDO.
  3977. DEF VAR p-err AS INT NO-UNDO.
  3978. RUN VpSetCellBuffer (CAPS(p-cell), CAPS(p-group), p-text, OUTPUT p-err).
  3979. IF p-err <> 0 THEN RETURN ERROR "SetCellBuffer: Error".
  3980. END.
  3981. /* AddToCellText: Append text to the buffer
  3982. 10.12.98 jc
  3983. */
  3984. PROCEDURE vpr_AddToCellBuffer:
  3985. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3986. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3987. DEF INPUT PARAM p-text AS CHAR NO-UNDO.
  3988. DEF VAR p-err AS INT NO-UNDO.
  3989. RUN VpAddToCellBuffer (CAPS(p-cell), CAPS(p-group), p-text, OUTPUT p-err).
  3990. IF p-err <> 0 THEN RETURN ERROR "AddToCellBuffer: Error".
  3991. END.
  3992. /* DeleteCellText: Clear a cells buffer
  3993. 10.12.98 jc
  3994. */
  3995. PROCEDURE vpr_DeleteCellBuffer:
  3996. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  3997. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  3998. DEF VAR p-err AS INT NO-UNDO.
  3999. RUN VpDeleteCellBuffer (CAPS(p-cell), CAPS(p-group), OUTPUT p-err).
  4000. IF p-err <> 0 THEN RETURN ERROR "DeleteCellBuffer: Error".
  4001. END.
  4002. /* SubmitCellText: Append text to the buffer
  4003. 10.12.98 jc
  4004. */
  4005. PROCEDURE vpr_SubmitCellBuffer:
  4006. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  4007. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4008. DEF VAR p-err AS INT NO-UNDO.
  4009. RUN VpSubmitCellBuffer (CAPS(p-cell), CAPS(p-group), OUTPUT p-err).
  4010. IF p-err <> 0 THEN RETURN ERROR "SubmitCellBuffer: Error".
  4011. END.
  4012. /****************************************
  4013. * Fetch cell, group, and page attributes *
  4014. ****************************************/
  4015. /*
  4016. * FetchCellWidth - retrieve the width of a cell
  4017. */
  4018. PROCEDURE vpr_FetchCellWidth:
  4019. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  4020. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4021. DEF OUTPUT PARAM p-width AS INT NO-UNDO.
  4022. RUN VpGetCellWidth(CAPS(p-cell), CAPS(p-group), OUTPUT p-width).
  4023. IF p-width = -1 THEN RETURN ERROR "FetchCellWidth: Error".
  4024. END.
  4025. /* gives height of cell */
  4026. PROCEDURE vpr_FetchCellHeight:
  4027. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  4028. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4029. DEF OUTPUT PARAM p-height AS INT NO-UNDO.
  4030. /* DEF VAR p-err AS INT NO-UNDO.
  4031. */
  4032. RUN VpCellHeight(CAPS(p-cell), CAPS(p-group), OUTPUT p-height).
  4033. IF p-height = -1 THEN RETURN ERROR "FetchCellHeight: Error".
  4034. END.
  4035. /* Returns height of group. The height of the group is the height
  4036. of the heighest cell. */
  4037. PROCEDURE vpr_FetchGroupHeight :
  4038. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4039. DEF OUTPUT PARAM p-height AS INT NO-UNDO.
  4040. /* DEF VAR p-err AS INT NO-UNDO.
  4041. */
  4042. RUN VpGroupHeight(CAPS(p-group), OUTPUT p-height).
  4043. IF p-height = -1 THEN RETURN ERROR "FetchGroupHeight: Error".
  4044. END.
  4045. /* Returns free vertical space on page (with flushed cells) */
  4046. PROCEDURE vpr_FetchPageVSpace:
  4047. DEF OUTPUT PARAM p-space AS INT NO-UNDO.
  4048. /* DEF VAR p-err AS INT NO-UNDO.
  4049. */
  4050. RUN VpGetFree(OUTPUT p-space).
  4051. /* Error-Tracking. */
  4052. IF p-Space = -1 THEN RETURN ERROR "VpFetchFree: Error".
  4053. END.
  4054. /* Returns vertical position of cursor */
  4055. PROCEDURE vpr_FetchPageVPos:
  4056. DEF OUTPUT PARAM p-pos AS INT NO-UNDO.
  4057. /* DEF VAR p-err AS INT NO-UNDO.
  4058. */
  4059. RUN VpGetPos(OUTPUT p-pos).
  4060. END.
  4061. /* Returns number of pages (=actual page) */
  4062. PROCEDURE vpr_FetchPageNo:
  4063. DEF OUTPUT PARAM p-page AS INT NO-UNDO.
  4064. /* DEF VAR p-err AS INT NO-UNDO.
  4065. */
  4066. RUN VpGetPages(OUTPUT p-page).
  4067. IF p-page = -1 THEN RETURN ERROR "FetchPageNo: Error".
  4068. END.
  4069. /* 19.1.98 */
  4070. /* FetchCellVPos - Fetch the vertical position of a cell
  4071. 19.1.98 jpc
  4072. */
  4073. PROCEDURE vpr_FetchCellVPos:
  4074. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4075. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  4076. DEF OUTPUT PARAM p-VPos AS INT NO-UNDO.
  4077. RUN VpGetCellVPos(INPUT CAPS(p-group), INPUT CAPS(p-cells), OUTPUT p-VPos).
  4078. END.
  4079. /* FetchCellHPos - Fetch the horizontal position of a cell
  4080. 19.1.98 jpc
  4081. */
  4082. PROCEDURE vpr_FetchCellHPos:
  4083. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4084. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  4085. DEF OUTPUT PARAM p-HPos AS INT NO-UNDO.
  4086. RUN VpGetCellHPos(INPUT CAPS(p-group), INPUT CAPS(p-cells), OUTPUT p-HPos).
  4087. END.
  4088. /* FetchGroupVPos - Fetch the vertical position of a group
  4089. 19.1.98 jpc
  4090. */
  4091. PROCEDURE vpr_FetchGroupVPos:
  4092. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4093. DEF OUTPUT PARAM p-VPos AS INT NO-UNDO.
  4094. RUN VpGetGroupVPos(INPUT CAPS(p-group), OUTPUT p-VPos).
  4095. END.
  4096. /* 23.11.98 */
  4097. /* FetchCellLineCount - return the number of lines in a cell
  4098. 23.11.98 jpc
  4099. */
  4100. PROCEDURE vpr_FetchCellLineCount:
  4101. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4102. DEF INPUT PARAM p-cells AS CHAR NO-UNDO.
  4103. DEF OUTPUT PARAM p-LineCount AS INT NO-UNDO.
  4104. RUN VpGetCellLineCount(INPUT CAPS(p-group), INPUT CAPS(p-cells), OUTPUT p-LineCount).
  4105. END.
  4106. /****************************
  4107. * FlushGroup, NewPage, etc *
  4108. ****************************/
  4109. /* prints all cells of given group and increases the line pointer
  4110. of this group. */
  4111. PROCEDURE vpr_FlushGroup :
  4112. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  4113. DEF VAR p-err AS INT NO-UNDO.
  4114. RUN VpFlushGroup(CAPS(p-group), OUTPUT p-err).
  4115. IF p-err <> 0 THEN RETURN ERROR "FlushGroup: Error".
  4116. END.
  4117. /* creates new page and resets cell-coordinates */
  4118. PROCEDURE vpr_NewPage:
  4119. DEF VAR p-err AS INT NO-UNDO.
  4120. RUN VpNewPage(OUTPUT p-err).
  4121. IF p-err <> 0 THEN RETURN ERROR "NewPage: Error".
  4122. END.
  4123. /* sets properties like PageOrientation and PaperTray for the current page
  4124. 27.08.1999 jc */
  4125. PROCEDURE vpr_SetCurrentPageProperties:
  4126. DEF INPUT PARAM p-prop AS CHAR NO-UNDO.
  4127. DEF INPUT PARAM p-value AS CHAR NO-UNDO.
  4128. DEF VAR p-err AS INT NO-UNDO.
  4129. p-value = IF p-value = "Portrait" THEN "1"
  4130. ELSE IF p-value = "Landscape" THEN "2"
  4131. ELSE p-value.
  4132. RUN VpSetCurrentPageProperties(CAPS(p-prop), p-value, OUTPUT p-err).
  4133. IF p-err <> 0 THEN RETURN ERROR "SetCurrentPageProperties: Error".
  4134. END.
  4135. /*
  4136. * vpr_SetPageVPos: Set the current pos on the current page
  4137. * 25.04.05 jc
  4138. */
  4139. PROCEDURE vpr_SetPageVPos:
  4140. DEF INPUT PARAM p-pos AS INT NO-UNDO.
  4141. DEF VAR p-err AS INT NO-UNDO.
  4142. RUN VpSetPageVPos(p-pos, OUTPUT p-err).
  4143. IF p-err <> 0 THEN RETURN ERROR "SetPageVPos: Error".
  4144. END.
  4145. /*
  4146. * SetPaperSize: Set the current paper size
  4147. *
  4148. * 03.07.2001 jc
  4149. */
  4150. PROCEDURE vpr_SetPaperSize:
  4151. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4152. DEF INPUT PARAM p-height AS INT NO-UNDO.
  4153. DEF VAR p-err AS INT NO-UNDO.
  4154. RUN VpSetPaperSize(p-width, p-height, OUTPUT p-err).
  4155. IF p-err <> 0 THEN RETURN ERROR "SetPaperSize: Error".
  4156. END.
  4157. /* Start printing from page-no to page-no.
  4158. To print all supply 0, 0 */
  4159. PROCEDURE vpr_PrintDoc:
  4160. DEF INPUT PARAM p-from AS INT NO-UNDO.
  4161. DEF INPUT PARAM p-to AS INT NO-UNDO.
  4162. DEF VAR p-err AS INT NO-UNDO.
  4163. RUN VpPrint(p-from, p-to, OUTPUT p-err).
  4164. IF p-err <> 0 THEN RETURN ERROR "PrintDoc: Error".
  4165. END.
  4166. /*
  4167. * PrintPDF:
  4168. * "Printing" to a PDF file, analogous to PrintDoc
  4169. * except for the additional parameter p-FNAM, that provides
  4170. * the filename for the PDF file.
  4171. * If p-FNAM is left blank viper will create a temporary file
  4172. * and return its name in FNAM
  4173. */
  4174. PROCEDURE vpr_PrintPDF:
  4175. DEF INPUT PARAM p-from AS INT NO-UNDO.
  4176. DEF INPUT PARAM p-to AS INT NO-UNDO.
  4177. DEF INPUT-OUTPUT PARAM p-fnam AS CHAR NO-UNDO.
  4178. DEF VAR fOut AS CHAR NO-UNDO.
  4179. DEF VAR fPDF AS CHAR NO-UNDO.
  4180. DEF VAR Com AS CHAR NO-UNDO.
  4181. DEF VAR lp-optional-ps AS CHAR NO-UNDO INIT "". /* optional ps file, used for landscape */
  4182. DEF VAR lp-papersize AS CHAR NO-UNDO INIT "a4".
  4183. DEF VAR p-err AS INT NO-UNDO.
  4184. fOut=FILL(" ",255). /* ensure fOut has enuff room */
  4185. /* bug in 10.0B */
  4186. RUN VpWebPrintDoc(p-from, p-to, gvp_webprt, INPUT-OUTPUT fOut, OUTPUT p-err).
  4187. fOut = TRIM(fOut).
  4188. fPDF = SUBSTR(fOut, 1, R-INDEX(fOut, ".")) + "pdf".
  4189. /* win8 / gs9 fix */
  4190. /**
  4191. IF l-printorientation = 2 THEN DO: /* Landscape */
  4192. /* lp-optional-ps = "lscap.ps". */
  4193. lp-papersize = lp-papersize + "q".
  4194. RUN VpSetLandscapePS(fOut,1, OUTPUT p-err). /* setlandscape: forcerotate!! */
  4195. END.
  4196. RUN VpPS2PDF(gvp_GSEXE,
  4197. gvp_GSDIR,
  4198. gvp_GSFONTPATH,
  4199. "-dBATCH -dNOPAUSE -dQUIET -r300x300 -sPAPERSIZE=" + lp-papersize, lp-optional-ps,
  4200. /* "-r300x300 -sPAPERSIZE=" + lp-papersize, lp-optional-ps,*/
  4201. "pdfwrite",fOut,fPDF, OUTPUT p-err).
  4202. **/
  4203. IF l-printorientation = 2 THEN
  4204. DO: /* Landscape */
  4205. lp-papersize = "-dDEVICEWIDTHPOINTS=842 -dDEVICEHEIGHTPOINTS=595 -dNORANGEPAGESIZE".
  4206. END.
  4207. ELSE
  4208. DO:
  4209. lp-papersize = "-sPAPERSIZE=a4".
  4210. END.
  4211. RUN VpPS2PDF(gvp_GSEXE,
  4212. gvp_GSDIR,
  4213. gvp_GSFONTPATH,
  4214. "-dBATCH -dNOPAUSE -dQUIET -r300x300 " + lp-papersize, lp-optional-ps,
  4215. "pdfwrite",fOut,fPDF, OUTPUT p-err).
  4216. /* win8 / gs9 fix */
  4217. IF p-err = 0 THEN
  4218. DO: /* only delete the ps-file if no error has occured. */
  4219. OS-DELETE VALUE(fOUT).
  4220. END.
  4221. IF p-fnam = "" THEN
  4222. DO:
  4223. p-fnam = fPDF.
  4224. END.
  4225. ELSE
  4226. DO:
  4227. FILE-INFO:FILE-NAME = p-fnam.
  4228. IF FILE-INFO:FULL-PATHNAME <> ? THEN
  4229. DO:
  4230. OS-DELETE VALUE(FILE-INFO:FULL-PATHNAME).
  4231. END.
  4232. OS-COPY VALUE(fPDF) VALUE(p-fnam).
  4233. OS-DELETE VALUE(fPDF).
  4234. END.
  4235. IF p-err <> 0 THEN RETURN ERROR "PrintPDF: Error".
  4236. END.
  4237. PROCEDURE vpr_WebPrintDoc:
  4238. DEF INPUT PARAM p-from AS INT NO-UNDO.
  4239. DEF INPUT PARAM p-to AS INT NO-UNDO.
  4240. DEF INPUT PARAM p-method AS CHAR NO-UNDO.
  4241. DEF VAR p-err AS INT NO-UNDO.
  4242. DEF VAR fOut AS CHAR NO-UNDO.
  4243. DEF VAR fPDF AS CHAR NO-UNDO.
  4244. DEF VAR Com AS CHAR NO-UNDO.
  4245. DEF VAR fPDF_base AS CHAR NO-UNDO.
  4246. DEF VAR lp-papersize AS CHAR NO-UNDO INIT "a4".
  4247. DEF VAR lp-tmp AS CHAR NO-UNDO.
  4248. DEF VAR lp-crlf AS CHAR NO-UNDO.
  4249. lp-crlf = CHR(13) + CHR(10).
  4250. fOut=FILL(" ",255). /* ensure fOut has 'nuff room */
  4251. RUN vpr_PrintOptions("ShowPrintStatus","Off","","","").
  4252. RUN VpWebPrintDoc(p-from, p-to, gvp_webprt, OUTPUT fOut, OUTPUT p-err).
  4253. fOut = TRIM(fOut).
  4254. fPDF = SUBSTR(fOut, 1, R-INDEX(fOut, ".")) + "pdf".
  4255. /**
  4256. Com = "{&WEBPS2PDF} " + SUBSTR(fOut, 1, R-INDEX(fOut, ".") - 1) + ' "{&VP_GSDIR}"'.
  4257. OS-COMMAND SILENT VALUE(Com).
  4258. */
  4259. IF l-printorientation = 2 THEN
  4260. DO: /* Landscape */
  4261. lp-papersize = lp-papersize + "q".
  4262. RUN VpSetLandscapePS(fOut,1, OUTPUT p-err). /* setlandscape: forcerotate!! */
  4263. END.
  4264. RUN VpPS2PDF(gvp_GSEXE,
  4265. gvp_GSDIR,
  4266. gvp_GSFONTPATH,
  4267. "-dBATCH -dNOPAUSE -dQUIET -r300x300 -sPAPERSIZE=" + lp-papersize, "",
  4268. /* "-r300x300 -sPAPERSIZE=" + lp-papersize, "",*/
  4269. "pdfwrite",fOut,fPDF, OUTPUT p-err).
  4270. IF p-err = 0 THEN
  4271. DO: /* only delete the ps-file if no error has occured. */
  4272. OS-DELETE VALUE(fOUT).
  4273. END.
  4274. MESSAGE "WebPrinting is not enabled" VIEW-AS ALERT-BOX.
  4275. IF p-err <> 0 THEN RETURN ERROR "WebPrintDoc: Error".
  4276. END.
  4277. /******************
  4278. * Graphics stuff *
  4279. ******************/
  4280. /*
  4281. * helper to change the linestyles from strings to the number encoding used internally
  4282. *
  4283. * jc, 19.04.02
  4284. */
  4285. PROCEDURE vpr_my_changestyle:
  4286. DEFINE INPUT PARAMETER p-char AS CHAR NO-UNDO.
  4287. DEFINE OUTPUT PARAMETER p-style AS INT NO-UNDO.
  4288. /*
  4289. * support old numbers...
  4290. */
  4291. p-style = INTEGER(p-char) NO-ERROR.
  4292. IF NOT ERROR-STATUS:ERROR THEN RETURN.
  4293. CASE TRIM(p-char):
  4294. WHEN "Solid" THEN
  4295. DO:
  4296. p-style = 0.
  4297. END.
  4298. WHEN "Dash" THEN
  4299. DO:
  4300. p-style = 1.
  4301. END.
  4302. WHEN "Dot" THEN
  4303. DO:
  4304. p-style = 2.
  4305. END.
  4306. WHEN "DashDot" THEN
  4307. DO:
  4308. p-style = 3.
  4309. END.
  4310. WHEN "DashDotDot" THEN
  4311. DO:
  4312. p-style = 4.
  4313. END.
  4314. OTHERWISE
  4315. DO:
  4316. p-style = 0.
  4317. END.
  4318. END.
  4319. END.
  4320. /*
  4321. * helper to change the "justify" value from strings to the number encoding used internally
  4322. *
  4323. * jc, 19.04.02
  4324. */
  4325. PROCEDURE vpr_my_changejustify:
  4326. DEFINE INPUT PARAMETER p-char AS CHAR NO-UNDO.
  4327. DEFINE OUTPUT PARAMETER p-style AS INT NO-UNDO.
  4328. /*
  4329. * support old numbers...
  4330. */
  4331. p-style = INTEGER(p-char) NO-ERROR.
  4332. IF NOT ERROR-STATUS:ERROR THEN RETURN.
  4333. CASE TRIM(p-char):
  4334. WHEN "fill" THEN
  4335. DO:
  4336. p-style = -1.
  4337. END.
  4338. WHEN "left" THEN
  4339. DO:
  4340. p-style = 1.
  4341. END.
  4342. WHEN "right" THEN
  4343. DO:
  4344. p-style = 2.
  4345. END.
  4346. WHEN "center" THEN
  4347. DO:
  4348. p-style = 3.
  4349. END.
  4350. WHEN "centered" THEN
  4351. DO:
  4352. p-style = 3.
  4353. END.
  4354. OTHERWISE
  4355. DO:
  4356. p-style = 0.
  4357. END.
  4358. END.
  4359. END.
  4360. /*
  4361. * helper to change the "fill" value (for rectangles) from strings to the number encoding used internally
  4362. *
  4363. * jc, 19.04.02
  4364. */
  4365. PROCEDURE vpr_my_changefilled:
  4366. DEFINE INPUT PARAMETER p-char AS CHAR NO-UNDO.
  4367. DEFINE OUTPUT PARAMETER p-style AS INT NO-UNDO.
  4368. /*
  4369. * support old numbers...
  4370. */
  4371. p-style = INTEGER(p-char) NO-ERROR.
  4372. IF NOT ERROR-STATUS:ERROR THEN RETURN.
  4373. CASE TRIM(p-char):
  4374. WHEN "fill" THEN
  4375. DO:
  4376. p-style = 1.
  4377. END.
  4378. WHEN "filled" THEN
  4379. DO:
  4380. p-style = 1.
  4381. END.
  4382. WHEN "true" THEN
  4383. DO:
  4384. p-style = 1.
  4385. END.
  4386. WHEN "yes" THEN
  4387. DO:
  4388. p-style = 1.
  4389. END.
  4390. WHEN "on" THEN
  4391. DO:
  4392. p-style = 1.
  4393. END.
  4394. OTHERWISE
  4395. DO:
  4396. p-style = 0.
  4397. END.
  4398. END.
  4399. END.
  4400. /* draw line
  4401. * jc - yet another very old one
  4402. * ke, changed color to char.
  4403. * jc, 19.04.02 - changed p-style parameter to char, supporting sensible names
  4404. * for the line styles
  4405. */
  4406. PROCEDURE vpr_DefFreeLine:
  4407. DEF INPUT PARAM p-x AS INT NO-UNDO.
  4408. DEF INPUT PARAM p-y AS INT NO-UNDO.
  4409. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4410. DEF INPUT PARAM p-height AS INT NO-UNDO.
  4411. DEF INPUT PARAM p-style AS CHAR NO-UNDO.
  4412. DEF INPUT PARAM p-bwidth AS INT NO-UNDO.
  4413. DEF INPUT PARAM p-col AS CHAR NO-UNDO.
  4414. DEF VAR p-err AS INT NO-UNDO.
  4415. DEF VAR l-Col AS INT NO-UNDO.
  4416. DEF VAR lp-style AS INT NO-UNDO.
  4417. RUN vpr_my_changestyle (p-style, OUTPUT lp-style).
  4418. RUN vpr_CalcCol (p-Col, OUTPUT l-Col).
  4419. RUN VpFreeLine(p-x, p-y,
  4420. p-width, p-height,
  4421. lp-style, p-bwidth, l-col, OUTPUT p-err).
  4422. IF p-err <> 0 THEN RETURN ERROR "DefFreeLine: Error".
  4423. END.
  4424. /* draw rectangle */
  4425. PROCEDURE vpr_DefRect:
  4426. DEF INPUT PARAM p-x AS INT NO-UNDO.
  4427. DEF INPUT PARAM p-y AS INT NO-UNDO.
  4428. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4429. DEF INPUT PARAM p-height AS INT NO-UNDO.
  4430. DEF INPUT PARAM p-filled AS CHAR NO-UNDO.
  4431. DEF INPUT PARAM p-col AS CHAR NO-UNDO.
  4432. DEF VAR p-err AS INT NO-UNDO.
  4433. DEF VAR l-Col AS INT NO-UNDO.
  4434. DEFINE VARIABLE lp-filled AS INT NO-UNDO.
  4435. RUN vpr_my_changefilled(p-filled, OUTPUT lp-filled).
  4436. RUN vpr_CalcCol (p-Col, OUTPUT l-Col).
  4437. RUN VpRectangle(p-x,p-y,p-width,p-height,lp-filled,l-col, OUTPUT p-err).
  4438. IF p-err <> 0 THEN RETURN ERROR "DefRect: Error".
  4439. END.
  4440. /* draw rounded rectangle */
  4441. PROCEDURE vpr_DefRndRect :
  4442. DEF INPUT PARAM p-x AS INT NO-UNDO.
  4443. DEF INPUT PARAM p-y AS INT NO-UNDO.
  4444. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4445. DEF INPUT PARAM p-height AS INT NO-UNDO.
  4446. DEF INPUT PARAM p-filled AS CHAR NO-UNDO.
  4447. DEF INPUT PARAM p-col AS CHAR NO-UNDO.
  4448. DEF VAR p-err AS INT NO-UNDO.
  4449. DEF VAR l-Col AS INT NO-UNDO.
  4450. DEFINE VARIABLE lp-filled AS INT NO-UNDO.
  4451. RUN vpr_my_changefilled(p-filled, OUTPUT lp-filled).
  4452. RUN vpr_CalcCol (p-Col, OUTPUT l-Col).
  4453. RUN VpRoundRect(p-x,p-y,p-width,p-height,lp-filled,l-col, OUTPUT p-err).
  4454. IF p-err <> 0 THEN RETURN ERROR "DefRndRect: Error".
  4455. END.
  4456. /* horizontal line */
  4457. PROCEDURE vpr_DefHLine :
  4458. DEF INPUT PARAM p-x AS INT NO-UNDO.
  4459. DEF INPUT PARAM p-y AS INT NO-UNDO.
  4460. DEF INPUT PARAM p-len AS INT NO-UNDO.
  4461. DEF INPUT PARAM p-style AS CHAR NO-UNDO.
  4462. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4463. DEF INPUT PARAM p-col AS CHAR NO-UNDO.
  4464. DEF VAR p-err AS INT NO-UNDO.
  4465. DEF VAR l-Col AS INT NO-UNDO.
  4466. DEF VAR lp-style AS INT NO-UNDO.
  4467. RUN vpr_my_changestyle (p-style, OUTPUT lp-style).
  4468. RUN vpr_CalcCol (p-Col, OUTPUT l-Col).
  4469. RUN VpHLine(p-x,p-y,p-len,lp-style,p-width,l-col, OUTPUT p-err).
  4470. IF p-err <> 0 THEN RETURN ERROR "DefHLine: Error".
  4471. END.
  4472. /* vertical line */
  4473. PROCEDURE vpr_DefVLine :
  4474. DEF INPUT PARAM p-x AS INT NO-UNDO.
  4475. DEF INPUT PARAM p-y AS INT NO-UNDO.
  4476. DEF INPUT PARAM p-len AS INT NO-UNDO.
  4477. DEF INPUT PARAM p-style AS CHAR NO-UNDO.
  4478. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4479. DEF INPUT PARAM p-col AS CHAR NO-UNDO.
  4480. DEF VAR p-err AS INT NO-UNDO.
  4481. DEF VAR l-Col AS INT NO-UNDO.
  4482. DEF VAR lp-style AS INT NO-UNDO.
  4483. RUN vpr_my_changestyle (p-style, OUTPUT lp-style).
  4484. RUN vpr_CalcCol (p-Col, OUTPUT l-Col).
  4485. RUN VpVLine(p-x,p-y,p-len,lp-style,p-width,l-col, OUTPUT p-err).
  4486. IF p-err <> 0 THEN RETURN ERROR "DefVline: Error".
  4487. END.
  4488. /* sets horizontal separator (line) at current cursor-pos. */
  4489. PROCEDURE vpr_DefHSep:
  4490. DEF INPUT PARAM p-len AS INT NO-UNDO.
  4491. DEF INPUT PARAM p-justify AS CHAR NO-UNDO.
  4492. DEF INPUT PARAM p-style AS CHAR NO-UNDO.
  4493. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4494. DEF INPUT PARAM p-col AS CHAR NO-UNDO.
  4495. DEF VAR p-err AS INT NO-UNDO.
  4496. DEF VAR l-Col AS INT NO-UNDO.
  4497. DEF VAR lp-style AS INT NO-UNDO.
  4498. RUN vpr_my_changestyle (p-style, OUTPUT lp-style).
  4499. DEF VAR lp-justify AS INT NO-UNDO.
  4500. RUN vpr_my_changejustify (p-justify, OUTPUT lp-justify).
  4501. RUN vpr_CalcCol (p-Col, OUTPUT l-Col).
  4502. RUN VpHSep(p-len,lp-justify,lp-style,p-width,l-col, OUTPUT p-err).
  4503. IF p-err <> 0 THEN RETURN ERROR "DefHSep: Error".
  4504. END.
  4505. /****************************
  4506. * error reporting *
  4507. ****************************/
  4508. /* read-error-report */
  4509. PROCEDURE vpr_VReadErrors:
  4510. /* last error-no. */
  4511. DEF INPUT-OUTPUT PARAM p-lasterr AS INT NO-UNDO.
  4512. /* number of errors occured */
  4513. DEF OUTPUT PARAM p-err AS INT NO-UNDO.
  4514. RUN ReadErrors(INPUT-OUTPUT p-lasterr, OUTPUT p-err).
  4515. /* IF p-err = -1 THEN RETURN ERROR ": Error".*/
  4516. END.
  4517. /*******************************
  4518. * nifty little picture things *
  4519. *******************************/
  4520. /*
  4521. * vpr_DefBMP:
  4522. * Define a Bitmap to be shown by Viper
  4523. * jc - one of the earliest commands we had...
  4524. * jc - 19.04.02/Viper3.0: removed the two logical paramter, added
  4525. * one character instead. Use sensible strings now [No]Resize/[No]KeepRatio
  4526. */
  4527. PROCEDURE vpr_DefBmp:
  4528. DEF INPUT PARAM p-Name AS CHAR NO-UNDO.
  4529. DEF INPUT PARAM p-x AS INT NO-UNDO.
  4530. DEF INPUT PARAM p-y AS INT NO-UNDO.
  4531. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4532. DEF INPUT PARAM p-height AS INT NO-UNDO.
  4533. DEF INPUT PARAM p-mode AS CHAR NO-UNDO.
  4534. DEFINE VARIABLE lp-adjust AS LOG NO-UNDO.
  4535. DEFINE VARIABLE lp-ratio AS LOG NO-UNDO.
  4536. DEFINE VARIABLE lp-ii AS INT NO-UNDO.
  4537. DEF VAR p-err AS INT NO-UNDO.
  4538. DEF VAR lp-savename AS CHAR NO-UNDO.
  4539. lp-adjust = FALSE.
  4540. lp-ratio = FALSE.
  4541. DO lp-ii = 1 TO NUM-ENTRIES(p-mode):
  4542. CASE TRIM(ENTRY(lp-ii, p-mode)):
  4543. WHEN "KeepRatio" THEN
  4544. DO:
  4545. lp-ratio = TRUE.
  4546. END.
  4547. WHEN "NoKeepRatio" THEN
  4548. DO:
  4549. lp-ratio = FALSE.
  4550. END.
  4551. WHEN "Keep" THEN
  4552. DO:
  4553. lp-ratio = TRUE.
  4554. END.
  4555. WHEN "NoKeep" THEN
  4556. DO:
  4557. lp-ratio = FALSE.
  4558. END.
  4559. WHEN "Ratio" THEN
  4560. DO:
  4561. lp-ratio = TRUE.
  4562. END.
  4563. WHEN "NoRatio" THEN
  4564. DO:
  4565. lp-ratio = FALSE.
  4566. END.
  4567. WHEN "Resize" THEN
  4568. DO:
  4569. lp-adjust = TRUE.
  4570. END.
  4571. WHEN "NoResize" THEN
  4572. DO:
  4573. lp-adjust = FALSE.
  4574. END.
  4575. END.
  4576. END.
  4577. /* make sure we find the pix */
  4578. /* save current value of FUEL-INFO */
  4579. lp-savename = FILE-INFO:FULL-PATHNAME.
  4580. /* get full-pathname to the pic. */
  4581. FILE-INFO:FILE-NAME = p-name.
  4582. p-name = FILE-INFO:FULL-PATHNAME.
  4583. /* restore FILE-INFO */
  4584. FILE-INFO:FILE-NAME = lp-savename.
  4585. IF p-Name = ? THEN
  4586. DO:
  4587. RETURN ERROR "DefBmp: Error - file not found".
  4588. END.
  4589. RUN VpBitMap
  4590. (p-name,
  4591. p-x, p-y, p-width, p-height,
  4592. IF lp-adjust THEN 1 ELSE 0, IF lp-ratio THEN 1 ELSE 0, OUTPUT p-err).
  4593. IF p-err <> 0 THEN RETURN ERROR "DefBmp: Error".
  4594. END.
  4595. /* SaveClipboardToFile - saves the clipboard contents
  4596. Type: defines the datatype to be saved. so far only bitmap (BMP)
  4597. and Device Independent Bitmap (DIB) is supported
  4598. FileIn: Filename to save the data to. if no FileIn is given
  4599. (i.e. an empty string) a temporary file with a unique filename
  4600. is chosen.
  4601. FileOut: returns the filename. empty if the procedure fails.
  4602. 17.07.98 jc
  4603. */
  4604. PROCEDURE vpr_SaveClipboardToFile:
  4605. DEF INPUT PARAM Type AS CHAR NO-UNDO.
  4606. DEF INPUT PARAM FileIn AS CHAR NO-UNDO.
  4607. DEF OUTPUT PARAM FileOut AS CHAR NO-UNDO.
  4608. DEF VAR p-err AS INT NO-UNDO.
  4609. DEF VAR iType AS INT NO-UNDO.
  4610. iType=0.
  4611. CASE Type:
  4612. WHEN "BITMAP" THEN
  4613. iType=2.
  4614. WHEN "BMP" THEN
  4615. iType=2.
  4616. WHEN "DIB" THEN
  4617. iType=2.
  4618. END CASE.
  4619. FileOut=FILL(" ",255). /* ensure FileOut has 'nuff room */
  4620. /* bug in 10.0B */
  4621. RUN VpSaveClipboardToFile(iType,FileIn,INPUT-OUTPUT FileOut, OUTPUT p-err).
  4622. IF p-err <> 0 THEN RETURN ERROR "SaveClipboardToFile: Error".
  4623. END.
  4624. /* SaveWindowToFile - saves the given window as DIB
  4625. HWND: Windowhandle of the window that should be saved.
  4626. AreaType: Save all of HWND or only clientarea?
  4627. FileIn: Filename to save the data to. if no FileIn is given
  4628. (i.e. an empty string) a temporary file with a unique filename
  4629. is chosen.
  4630. FileOut: returns the filename. empty if the procedure fails.
  4631. 17.07.98 jc
  4632. */
  4633. PROCEDURE vpr_SaveWindowToFile:
  4634. DEF INPUT PARAM HWND AS INT NO-UNDO.
  4635. DEF INPUT PARAM AreaType AS CHAR NO-UNDO.
  4636. DEF INPUT PARAM FileIn AS CHAR NO-UNDO.
  4637. DEF OUTPUT PARAM FileOut AS CHAR NO-UNDO.
  4638. DEF VAR p-err AS INT NO-UNDO.
  4639. DEF VAR iType AS INT NO-UNDO.
  4640. iType=2.
  4641. CASE AreaType:
  4642. WHEN "ALL" THEN
  4643. iType=1.
  4644. WHEN "WINDOW" THEN
  4645. iType=1.
  4646. WHEN "CLIENT" THEN
  4647. iType=2.
  4648. END CASE.
  4649. FileOut=FILL(" ",255). /* ensure FileOut has 'nuff room */
  4650. /* bug in 10.0.b */
  4651. RUN VpSaveWindowToFile(HWND,iType,FileIn,INPUT-OUTPUT FileOut, OUTPUT p-err).
  4652. IF p-err <> 0 THEN RETURN ERROR "SaveWindowToFile: Error".
  4653. END.
  4654. /*************************
  4655. * window control stuff *
  4656. *************************/
  4657. /* Show the preview window */
  4658. PROCEDURE vpr_ShowPreview:
  4659. /* DEF OUTPUT PARAM p-err AS SHORT NO-UNDO.
  4660. */
  4661. DEF VAR p-err AS INT NO-UNDO.
  4662. RUN VpShowPreview(OUTPUT p-err).
  4663. /* Error-Tracking. */
  4664. IF p-err <> 0 THEN RETURN ERROR "ShowPreview: Error".
  4665. END.
  4666. /* Hide the preview window */
  4667. PROCEDURE vpr_HidePreview:
  4668. DEF VAR p-err AS INT NO-UNDO.
  4669. RUN VpHidePreview(OUTPUT p-err).
  4670. /* Error-Tracking. */
  4671. IF p-err <> 0 THEN RETURN ERROR "HidePreview: Error".
  4672. END.
  4673. /*
  4674. * Get the current preview state (hidden/visible)
  4675. *
  4676. * 17.03.03 jc
  4677. */
  4678. PROCEDURE vpr_FetchPreviewStatus:
  4679. DEF INPUT PARAM p-wait AS INT NO-UNDO.
  4680. DEF OUTPUT PARAM p-status AS INT NO-UNDO.
  4681. DEF VAR p-prevstat AS CHAR NO-UNDO.
  4682. RUN VpGetPreviewStatus(INPUT p-wait, OUTPUT p-status).
  4683. IF p-status=1 THEN
  4684. DO:
  4685. p-prevstat = "visible".
  4686. END.
  4687. ELSE
  4688. DO:
  4689. p-prevstat = "hidden".
  4690. END.
  4691. END.
  4692. /* Set the window position and size */
  4693. PROCEDURE vpr_SetWindowPos:
  4694. DEF INPUT PARAM p-left AS INT NO-UNDO.
  4695. DEF INPUT PARAM p-top AS INT NO-UNDO.
  4696. DEF INPUT PARAM p-width AS INT NO-UNDO.
  4697. DEF INPUT PARAM p-height AS INT NO-UNDO.
  4698. DEF VAR p-err AS INT NO-UNDO.
  4699. RUN VpSetWindowPos(p-left, p-top, p-width, p-height, OUTPUT p-err).
  4700. /* Error-Tracking. */
  4701. IF p-err <> 0 THEN RETURN ERROR "SetWindowPos: Error".
  4702. END.
  4703. /*
  4704. * show a persistent preview
  4705. */
  4706. PROCEDURE vpr_ShowDoc:
  4707. DEF VAR p-err AS INT NO-UNDO.
  4708. DEF VAR lp-fnam AS CHAR NO-UNDO.
  4709. RUN VpShowDoc(OUTPUT p-err).
  4710. IF p-err = 1 THEN
  4711. DO:
  4712. lp-fnam = SEARCH("VprRead.exe").
  4713. IF lp-fnam = ? THEN
  4714. DO:
  4715. RETURN ERROR "vpr_showDoc: no way to find VprRead.exe".
  4716. END.
  4717. ELSE
  4718. DO:
  4719. OS-COMMAND SILENT NO-CONSOLE VALUE(lp-fnam + "/install").
  4720. RUN VpShowDoc(OUTPUT p-err).
  4721. END.
  4722. END.
  4723. /* Error-Tracking. */
  4724. IF p-err <> 0 THEN RETURN ERROR "vpr_ShowDoc: Error".
  4725. END.
  4726. /*************************
  4727. * Printer control stuff *
  4728. *************************/
  4729. /* select printer */
  4730. PROCEDURE vpr_SelectPrinter:
  4731. DEF INPUT PARAM p-name AS CHAR NO-UNDO.
  4732. DEF VAR p-err AS INT NO-UNDO.
  4733. RUN VpSelectPrinter(INPUT p-name, OUTPUT p-err).
  4734. /* Error-Tracking. */
  4735. IF p-err = 2 THEN RETURN "2".
  4736. IF p-err <> 0 THEN RETURN ERROR "SelectPrinter: Error".
  4737. END.
  4738. /* PrintOptions: You can set different options in VIPER.
  4739. They are ugly code, most with integer. */
  4740. PROCEDURE vpr_PrintOptions:
  4741. /* Name of option you want to set.
  4742. officially known: orientation, Previewmode. */
  4743. DEF INPUT PARAM p-Mode AS CHAR NO-UNDO.
  4744. /* Option 1 to 4 are char options for the user. */
  4745. DEF INPUT PARAM p-Opt1 AS CHAR NO-UNDO.
  4746. DEF INPUT PARAM p-Opt2 AS CHAR NO-UNDO.
  4747. DEF INPUT PARAM p-Opt3 AS CHAR NO-UNDO.
  4748. DEF INPUT PARAM p-Opt4 AS CHAR NO-UNDO.
  4749. DEF VAR lp-Int1 AS INT NO-UNDO.
  4750. DEF VAR lp-Int2 AS INT NO-UNDO.
  4751. DEF VAR lp-Int3 AS INT NO-UNDO.
  4752. DEF VAR lp-Char1 AS CHAR NO-UNDO.
  4753. DEF VAR p-err AS INT NO-UNDO.
  4754. /* Switch char options to numeric values. */
  4755. CASE p-Mode:
  4756. WHEN "Orientation":U THEN
  4757. DO:
  4758. /* Option1 is orientation mode. Opt2-Opt4 are meaningless. */
  4759. lp-Int1 = IF p-Opt1 = "Default" THEN 0
  4760. ELSE IF p-Opt1 = "Portrait" THEN 1
  4761. ELSE IF p-Opt1 = "Landscape" THEN 2
  4762. ELSE 0.
  4763. l-printorientation = lp-int1.
  4764. END. /* of mode orientation */
  4765. WHEN "PreviewMode":U THEN
  4766. DO:
  4767. /* Option1 is print mode. Opt2-Opt4 are meaningless. */
  4768. lp-Int1 =
  4769. IF p-Opt1 = "Preview" THEN 0 /* Whole doc with preview. */
  4770. ELSE IF p-Opt1 = "Direct" THEN 2 /* Whole doc direct to printer */
  4771. ELSE IF p-Opt1 = "PageByPage" THEN 4 /* Whole doc but pg by pg. */
  4772. ELSE 0.
  4773. END. /* of mode print mode */
  4774. WHEN "ENABLEPRINTERDIALOG":U THEN
  4775. DO:
  4776. /* Option1 is on or off. nothing else */
  4777. lp-Int1 = IF p-Opt1 = "On" THEN 1
  4778. ELSE 0.
  4779. END. /* PrinterDialog */
  4780. WHEN "SHOWPRINTSTATUS":U THEN
  4781. DO:
  4782. /* Option1 is on or off. nothing else */
  4783. lp-Int1 = IF p-Opt1 = "On" THEN 1
  4784. ELSE IF p-Opt1 = "NoCancel" THEN 2
  4785. ELSE 0.
  4786. END. /* ShowPrintStatus */
  4787. END CASE. /* p-mode */
  4788. RUN VpPrintOptions
  4789. ( CAPS(p-Mode), lp-Int1, lp-Int2, lp-Int3, lp-Char1, OUTPUT p-err ).
  4790. IF p-err <> 0 THEN RETURN ERROR "PrintOptions(SetPageOrientation/SetPreviewMode/SetPrinterDialogMode): Error".
  4791. END. /* of printoptions. */
  4792. /* Define a wrapper for the printmode orientation. */
  4793. PROCEDURE vpr_SetPageOrientation:
  4794. DEF INPUT PARAM p-Orientation AS CHAR NO-UNDO.
  4795. DEF VAR p-err AS INT NO-UNDO.
  4796. RUN vpr_PrintOptions ("Orientation", p-Orientation, "", "", ""/*, OUTPUT p-err*/).
  4797. END PROCEDURE. /* setorientation */
  4798. /* Define a wrapper for the previewmode. */
  4799. PROCEDURE vpr_SetPreviewMode:
  4800. DEF INPUT PARAM p-Previewmode AS CHAR NO-UNDO.
  4801. DEF VAR p-err AS INT NO-UNDO.
  4802. RUN vpr_PrintOptions ("Previewmode", p-Previewmode, "", "", ""/*, OUTPUT p-err*/).
  4803. END PROCEDURE. /* setorientation */
  4804. /* SetPrinterAttrib - fancier print options handling :-))))
  4805. 07.04.1998 jpc
  4806. 11.10.1999 jpc - added l_PAFLAG to see which values are valid
  4807. */
  4808. PROCEDURE vpr_SetPrinterAttrib:
  4809. DEF INPUT PARAM p-Attribs AS CHAR NO-UNDO.
  4810. DEF VAR p-err AS INT NO-UNDO INIT 0.
  4811. DEF VAR c_entry AS CHAR NO-UNDO.
  4812. DEF VAR c_entry_left AS CHAR NO-UNDO.
  4813. DEF VAR c_entry_rite AS CHAR NO-UNDO.
  4814. DEF VAR i_copies AS INT NO-UNDO.
  4815. DEF VAR i_from AS INT NO-UNDO.
  4816. DEF VAR i_to AS INT NO-UNDO.
  4817. DEF VAR i_tofile AS INT NO-UNDO.
  4818. DEF VAR i_sort AS INT NO-UNDO.
  4819. DEF VAR c_name AS CHAR NO-UNDO.
  4820. DEF VAR i_duplex AS INT NO-UNDO INIT 0.
  4821. DEF VAR ptr_PrinterAttrib AS MEMPTR.
  4822. DEF VAR ii AS INT NO-UNDO.
  4823. DEF VAR ij AS INT NO-UNDO.
  4824. DEF VAR l_PAFLAGS AS INT NO-UNDO INIT 0.
  4825. ij = NUM-ENTRIES(p-attribs).
  4826. DO ii = 1 TO ij:
  4827. c_entry = TRIM(ENTRY(ii,p-attribs)).
  4828. c_entry_left=TRIM(ENTRY(1,c_entry,"=")).
  4829. c_entry_rite=TRIM(ENTRY(2,c_entry,"=")).
  4830. CASE c_entry_left:
  4831. WHEN "Copies" THEN
  4832. DO:
  4833. i_copies = INT(c_entry_rite).
  4834. l_PAFLAGS = l_PAFLAGS + 1 .
  4835. END.
  4836. WHEN "From" THEN
  4837. DO:
  4838. i_from = INT(c_entry_rite).
  4839. l_PAFLAGS = l_PAFLAGS + 2 .
  4840. END.
  4841. WHEN "To" THEN
  4842. DO:
  4843. i_to = INT(c_entry_rite).
  4844. l_PAFLAGS = l_PAFLAGS + 4 .
  4845. END.
  4846. WHEN "ToFile" THEN
  4847. DO:
  4848. i_toFile = IF (c_entry_rite = "YES"
  4849. OR c_entry_rite = "TRUE") THEN 1 ELSE 0.
  4850. l_PAFLAGS = l_PAFLAGS + 8 .
  4851. END.
  4852. WHEN "Sort" THEN
  4853. DO:
  4854. i_sort = IF (c_entry_rite = "YES"
  4855. OR c_entry_rite = "TRUE") THEN 1 ELSE 0.
  4856. l_PAFLAGS = l_PAFLAGS + 16 .
  4857. END.
  4858. WHEN "PrinterName" THEN
  4859. DO:
  4860. c_name = c_entry_rite.
  4861. l_PAFLAGS = l_PAFLAGS + 32 .
  4862. END.
  4863. WHEN "FileName" THEN
  4864. DO:
  4865. c_name = c_entry_rite.
  4866. l_PAFLAGS = l_PAFLAGS + 32 .
  4867. END.
  4868. WHEN "FileTo" THEN
  4869. DO:
  4870. c_name = c_entry_rite.
  4871. l_PAFLAGS = l_PAFLAGS + 32 .
  4872. END.
  4873. WHEN "Name" THEN
  4874. DO:
  4875. c_name = c_entry_rite.
  4876. l_PAFLAGS = l_PAFLAGS + 32 .
  4877. END.
  4878. WHEN "Duplex" THEN
  4879. DO:
  4880. i_duplex = INT(c_entry_rite).
  4881. END.
  4882. END CASE.
  4883. END.
  4884. /* Now setup the structure */
  4885. /* struct PrinterAttrib
  4886. {
  4887. WORD size; // size of the structure
  4888. BYTE ver; // version of the structure
  4889. WORD copies; // number of copies to print
  4890. WORD from; // first page
  4891. WORD to; // last page
  4892. BYTE sort; // sort output?
  4893. BYTE toFile; // send output to file instead of printer?
  4894. WORD paflags; // what's been set?
  4895. WORD sizeOfName;// size of the following string
  4896. char name[xxx]; // file or printer name
  4897. }
  4898. */
  4899. SET-SIZE(ptr_PrinterAttrib)=16 + LENGTH(c_name). /* one extra byte for terminating NULL */
  4900. PUT-SHORT(ptr_PrinterAttrib,1) =16 + LENGTH(c_name).
  4901. PUT-BYTE(ptr_PrinterAttrib,3)=2. /* version 2 */
  4902. PUT-SHORT(ptr_PrinterAttrib,4)=i_copies.
  4903. PUT-SHORT(ptr_PrinterAttrib,6)=i_from.
  4904. PUT-SHORT(ptr_PrinterAttrib,8)=i_to.
  4905. PUT-BYTE(ptr_PrinterAttrib,10)=i_sort.
  4906. PUT-BYTE(ptr_PrinterAttrib,11)=i_toFile.
  4907. PUT-SHORT(ptr_PrinterAttrib,12)=l_PAFLAGS.
  4908. PUT-SHORT(ptr_PrinterAttrib,14)=LENGTH(c_name).
  4909. PUT-STRING(ptr_PrinterAttrib,16)=c_name.
  4910. RUN VpSetPrinterAttrib (ptr_PrinterAttrib,i_duplex).
  4911. IF p-err <> 0 THEN RETURN ERROR "SetPrinterAttrib: Error".
  4912. END.
  4913. /**************************
  4914. * Fetch Printer Attributes *
  4915. **************************/
  4916. /* 28.05.98 */
  4917. PROCEDURE vpr_FetchPrinterAttrib:
  4918. DEF INPUT PARAM p_attrib AS CHAR NO-UNDO.
  4919. DEF OUTPUT PARAM p_value AS CHAR NO-UNDO.
  4920. DEFINE VARIABLE lp-val AS INT NO-UNDO.
  4921. RUN VpGetPrinterAttrib(CAPS(p_attrib), OUTPUT lp-val).
  4922. p_value = TRIM(STRING(lp-val)).
  4923. END.
  4924. /*************************************
  4925. * dialog and user interaction stuff *
  4926. *************************************/
  4927. /* show printer setup dialog */
  4928. PROCEDURE vpr_PrinterSetup:
  4929. DEF VAR p-err AS INT NO-UNDO.
  4930. RUN VpPrinterSetup(OUTPUT p-err).
  4931. /* Error-Tracking. */
  4932. IF p-err <> 0 THEN RETURN ERROR "PrinterSetup: Error".
  4933. END.
  4934. /* show printer dialog */
  4935. PROCEDURE vpr_PrinterDialog:
  4936. DEF OUTPUT PARAM lButton AS LOGICAL NO-UNDO.
  4937. DEF VAR iButton AS INT NO-UNDO.
  4938. RUN VpPrinterDialog(OUTPUT iButton).
  4939. /* Error-Tracking. */
  4940. IF iButton = -1 THEN RETURN ERROR "PrinterDialog: Error".
  4941. lButton = IF iButton = 0 THEN FALSE ELSE TRUE.
  4942. END.
  4943. /* Define a wrapper for the printmode PrinterDialog. */
  4944. PROCEDURE vpr_SetPrinterDialogMode:
  4945. DEF INPUT PARAM p-PrintDlg AS CHAR NO-UNDO.
  4946. DEF VAR p-err AS INT NO-UNDO.
  4947. RUN vpr_PrintOptions ("ENABLEPRINTERDIALOG", p-PrintDlg, "", "", ""/*, OUTPUT p-err*/).
  4948. END PROCEDURE. /* SetPrinterDialogMode */
  4949. /***************************
  4950. * Document control stuff *
  4951. ***************************/
  4952. /*
  4953. * SetDocTitle - set the title of a viper document
  4954. * 04.10.2001 jc
  4955. */
  4956. PROCEDURE vpr_SetDocTitle:
  4957. DEF INPUT PARAM p-title AS CHAR NO-UNDO.
  4958. DEF VAR p-err AS INT NO-UNDO.
  4959. RUN VpSetDocTitle(p-title, OUTPUT p-err).
  4960. IF p-err <> 0 THEN RETURN ERROR "SetDocTitle: Error".
  4961. END.
  4962. /* Reset whole document, reads actual printer setup. */
  4963. PROCEDURE vpr_ResetDoc:
  4964. DEF VAR p-err AS INT NO-UNDO.
  4965. RUN VpDeleteAll(OUTPUT p-err).
  4966. IF p-err <> 0 THEN RETURN ERROR "ResetDoc: Error".
  4967. END.
  4968. /* EndDoc - Tell viper that the document is over...
  4969. 19.1.98 jpc
  4970. */
  4971. PROCEDURE vpr_EndDoc:
  4972. DEF VAR p-err AS INT NO-UNDO.
  4973. RUN VpEndDoc(OUTPUT p-err).
  4974. /* Error-Tracking. */
  4975. IF p-err <> 0 THEN RETURN ERROR "EndDoc: Error".
  4976. END.
  4977. /* SaveDoc - save a document to a File
  4978. 29.04.98 jpc
  4979. */
  4980. PROCEDURE vpr_SaveDoc:
  4981. DEF INPUT PARAM p-sFileName AS CHAR NO-UNDO.
  4982. DEF VAR p-err AS INT NO-UNDO.
  4983. RUN VpSaveDoc(p-sFileName, OUTPUT p-err).
  4984. /* Error-Tracking. */
  4985. IF p-err <> 0 THEN RETURN ERROR "SaveDoc: Error".
  4986. END.
  4987. /* OpenDoc - loads a document to a File
  4988. 29.04.98 jpc
  4989. */
  4990. PROCEDURE vpr_OpenDoc:
  4991. DEF INPUT PARAM p-sFileName AS CHAR NO-UNDO.
  4992. DEF VAR p-err AS INT NO-UNDO.
  4993. RUN VpOpenDoc(p-sFileName, OUTPUT p-err).
  4994. /* Error-Tracking. */
  4995. IF p-err <> 0 THEN RETURN ERROR "OpenDoc: Error".
  4996. END.
  4997. /* ExportDoc - save a document to a File
  4998. 23.08.02 jc
  4999. */
  5000. PROCEDURE vpr_ExportDoc:
  5001. DEF INPUT PARAM p-from AS INT NO-UNDO.
  5002. DEF INPUT PARAM p-to AS INT NO-UNDO.
  5003. DEF INPUT PARAM p-fname AS CHAR NO-UNDO.
  5004. DEF INPUT PARAM p-type AS CHAR NO-UNDO.
  5005. DEF VAR p-err AS INT NO-UNDO.
  5006. RUN VpExportDoc(p-from, p-to, p-fname, p-type, OUTPUT p-err).
  5007. /* Error-Tracking. */
  5008. IF p-err <> 0 THEN RETURN ERROR "ExportDoc: Error".
  5009. END.
  5010. /*********************************
  5011. * MISC stuff i can't find a *
  5012. * better place for *
  5013. *********************************/
  5014. /* ViperDEBUG - some 'commands' to see some internal Viper stuff */
  5015. /* 27.04.98 jpc */
  5016. /* 'commands' so far known to ViperDEBUG - Params
  5017. DISPLAY_PAGE_SIZE - No Params
  5018. */
  5019. PROCEDURE vpr_ViperDEBUG:
  5020. DEF INPUT PARAM p-commands AS CHAR NO-UNDO.
  5021. DEF INPUT PARAM p-paramList AS CHAR NO-UNDO.
  5022. DEF VAR p-err AS INT NO-UNDO.
  5023. RUN VpDEBUG (CAPS(p-commands), CAPS(p-paramlist), OUTPUT p-err).
  5024. END PROCEDURE.
  5025. /*
  5026. dump the document contents
  5027. 21.02.05 jc
  5028. */
  5029. PROCEDURE vpr_DebugDumpDocument:
  5030. DEF INPUT PARAM p-file AS CHAR NO-UNDO.
  5031. DEFINE VARIABLE p-err AS INT NO-UNDO.
  5032. RUN VpDebugDumpDocument(p-file, OUTPUT p-err).
  5033. END PROCEDURE.
  5034. /*********************************
  5035. * helper functions of all kinds *
  5036. *********************************/
  5037. PROCEDURE vpr_ShowDLLVersion:
  5038. DEF VAR lp-ver AS INT NO-UNDO.
  5039. RUN VpShowDLLVersion (OUTPUT lp-ver).
  5040. END.
  5041. /* Change an color string in the format "red,green,blue" to an int.
  5042. Instead of comma seperated list the v6 colors are allowed. */
  5043. PROCEDURE vpr_CalcCol:
  5044. DEF INPUT PARAM p-ColChar AS CHAR NO-UNDO.
  5045. DEF OUTPUT PARAM p-ColInt AS INT NO-UNDO.
  5046. /* There are some predefined colors.
  5047. These are the colors which are known until V6 from progress.
  5048. (without light-yellow). */
  5049. CASE p-ColChar:
  5050. WHEN "Light-Gray" THEN
  5051. p-ColChar = "225,225,225".
  5052. WHEN "Gray" THEN
  5053. p-ColChar = "128,128,128".
  5054. WHEN "Dark-Gray" THEN
  5055. p-ColChar = "100,100,100".
  5056. WHEN "Black" THEN
  5057. p-ColChar = "0,0,0".
  5058. WHEN "White" THEN
  5059. p-ColChar = "255,255,255".
  5060. WHEN "Blue" THEN
  5061. p-ColChar = "0,0,255".
  5062. WHEN "Light-Blue" THEN
  5063. p-ColChar = "128,128,255".
  5064. WHEN "Green" THEN
  5065. p-ColChar = "0,255,0".
  5066. WHEN "Light-Green" THEN
  5067. p-ColChar = "128,255,128".
  5068. WHEN "Cyan" THEN
  5069. p-ColChar = "0,255,255".
  5070. WHEN "Light-Cyan" THEN
  5071. p-ColChar = "128,255,255".
  5072. WHEN "Red" THEN
  5073. p-ColChar = "255,0,0".
  5074. WHEN "Light-Red" THEN
  5075. p-ColChar = "255,128,128".
  5076. WHEN "Magenta" THEN
  5077. p-ColChar = "255,0,255".
  5078. WHEN "Light-Magenta" THEN
  5079. p-ColChar = "255,128,255".
  5080. WHEN "Brown" THEN
  5081. p-ColChar = "119,43,26".
  5082. WHEN "Light-Brown" THEN
  5083. p-ColChar = "165,91,50".
  5084. WHEN "Yellow" THEN
  5085. p-ColChar = "255,255,0".
  5086. WHEN "Light-Yellow" THEN
  5087. p-ColChar = "255,255,128".
  5088. WHEN "" THEN
  5089. p-ColChar = "0,0,0". /* Avoid Errors with empty fiels. */
  5090. WHEN ? THEN
  5091. p-ColChar = "0,0,0". /* Avoid Errors with empty fiels. */
  5092. END CASE.
  5093. /* There must be three parts be defined. But we do !not! check for errors. */
  5094. p-ColInt =
  5095. INT(TRIM(ENTRY(1, p-ColChar))) /* red */
  5096. + ( 256 * INT(TRIM(ENTRY(2, p-ColChar))) ) /* green */
  5097. + ( 65536 * INT(TRIM(ENTRY(3, p-ColChar))) ) NO-ERROR. /* Blue */
  5098. IF ERROR-STATUS:ERROR THEN
  5099. DO:
  5100. p-ColInt =
  5101. INT(TRIM(ENTRY(1, p-ColChar, ":"))) /* red */
  5102. + ( 256 * INT(TRIM(ENTRY(2, p-ColChar, ":"))) ) /* green */
  5103. + ( 65536 * INT(TRIM(ENTRY(3, p-ColChar, ":"))) ) NO-ERROR. /* Blue */
  5104. IF ERROR-STATUS:ERROR THEN
  5105. DO:
  5106. MESSAGE "Viper: Error in color-string (~"" + p-ColChar + "~"). Setting to default color (~"0:0:0~")"
  5107. VIEW-AS ALERT-BOX INFO BUTTONS OK.
  5108. p-ColInt = 0.
  5109. END.
  5110. END.
  5111. END PROCEDURE. /* calccol */
  5112. /* Change an attribute string to an format number. */
  5113. PROCEDURE vpr_CalcFormat:
  5114. DEF INPUT PARAM p-Attr AS CHAR NO-UNDO.
  5115. DEF OUTPUT PARAM p-Form AS INT NO-UNDO.
  5116. DEF VAR ii AS INT NO-UNDO.
  5117. DO ii = 1 TO NUM-ENTRIES(p-Attr):
  5118. p-Form = p-Form
  5119. + IF ENTRY(ii, p-Attr) = "italic" THEN 1
  5120. ELSE IF ENTRY(ii, p-Attr) = "underline" THEN 2
  5121. ELSE IF ENTRY(ii, p-Attr) = "strikeout" THEN 4
  5122. ELSE IF ENTRY(ii, p-Attr) = "bold" THEN 8
  5123. ELSE 0.
  5124. END.
  5125. IF p-Form >= 16 THEN p-Form = 15. /* Not to much */
  5126. END PROCEDURE. /* calcformat */
  5127. /*
  5128. External windooze procedures.
  5129. */
  5130. PROCEDURE LoadLibraryA EXTERNAL "kernel32.dll":
  5131. DEF INPUT PARAM p-name AS CHAR NO-UNDO.
  5132. DEF RETURN PARAM p-dll AS LONG NO-UNDO.
  5133. END.
  5134. PROCEDURE FreeLibrary EXTERNAL "kernel32.dll":
  5135. DEF INPUT PARAM p-dll AS LONG NO-UNDO.
  5136. END.
  5137. /*
  5138. * from now on I simple add new procedure to the end of the file
  5139. * the old sort order isn't helpful anymore, so with this order,
  5140. * we can at least easily find the last additions to viper
  5141. * 03.05.05 jc
  5142. */
  5143. PROCEDURE vpr_SetDocAttrib:
  5144. DEFINE INPUT PARAM p-attriblist AS CHAR NO-UNDO.
  5145. DEFINE VARIABLE lp-err AS INTEGER NO-UNDO.
  5146. RUN VpSetDocAttrib(p-attriblist, OUTPUT lp-err).
  5147. /* Error-Tracking. */
  5148. IF lp-err <> 0 THEN RETURN ERROR "SetDocAttrib: Error".
  5149. END.
  5150. /* return the height needed to print all of the cells' text */
  5151. PROCEDURE vpr_FetchCellTextHeight:
  5152. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  5153. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5154. DEF OUTPUT PARAM p-height AS INT NO-UNDO.
  5155. RUN VpGetCellTextHeight(CAPS(p-cell), CAPS(p-group), OUTPUT p-height).
  5156. IF p-height = -1 THEN RETURN ERROR "FetchCellTextHeight: Error".
  5157. END.
  5158. /* return the width necessary to print the cells' text */
  5159. PROCEDURE vpr_FetchCellTextWidth:
  5160. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  5161. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5162. DEF OUTPUT PARAM p-height AS INT NO-UNDO.
  5163. RUN VpGetCellTextWidth(CAPS(p-cell), CAPS(p-group), OUTPUT p-height).
  5164. IF p-height = -1 THEN RETURN ERROR "FetchCellTextHeight: Error".
  5165. END.
  5166. /* set a viperobj (graphical...)
  5167. * 13.05.05 jc
  5168. */
  5169. PROCEDURE vpr_SetGraphObj:
  5170. DEF INPUT PARAM p-objnam AS CHAR NO-UNDO.
  5171. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5172. DEF INPUT PARAM p-type AS CHAR NO-UNDO.
  5173. DEF INPUT PARAM p-x AS INT NO-UNDO.
  5174. DEF INPUT PARAM p-y AS INT NO-UNDO.
  5175. DEF INPUT PARAM p-w AS INT NO-UNDO.
  5176. DEF INPUT PARAM p-h AS INT NO-UNDO.
  5177. DEF INPUT PARAM p-attribs AS CHAR NO-UNDO.
  5178. DEF VAR lp-err AS INT NO-UNDO.
  5179. RUN VpSetGraphObj(CAPS(p-objnam),CAPS(p-group),CAPS(p-type),p-x,p-y,p-w,p-h,CAPS(p-attribs),OUTPUT lp-err).
  5180. /* Error-Tracking. */
  5181. IF lp-err <> 0 THEN RETURN ERROR "vpr_SetGraphObj: Error".
  5182. END PROCEDURE.
  5183. /* set group attributes
  5184. * currently only one attribute (fixed=true/false) is supported
  5185. *
  5186. * 26.05.04 jc
  5187. */
  5188. PROCEDURE vpr_SetGroupAttrib:
  5189. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5190. DEF INPUT PARAM p-attr AS CHAR NO-UNDO.
  5191. DEF VAR lp-err AS INT NO-UNDO.
  5192. RUN VpSetGroupAttr(CAPS(p-group), CAPS(p-attr), OUTPUT lp-err).
  5193. /* Error-Tracking. */
  5194. IF lp-err <> 0 THEN RETURN ERROR "vpr_SetGroupAttr: Error".
  5195. END PROCEDURE.
  5196. /*
  5197. * wrapper to keep us from incompatibility with 3.2Beta
  5198. * where this was named ...Attr instead of ..Attrib
  5199. */
  5200. PROCEDURE vpr_SetGroupAttr:
  5201. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5202. DEF INPUT PARAM p-attr AS CHAR NO-UNDO.
  5203. RUN vpr_SetGroupAttrib(p-group, p-attr).
  5204. END PROCEDURE.
  5205. /* set graphObj attributes
  5206. *
  5207. * 27.05.04 jc
  5208. */
  5209. PROCEDURE vpr_SetGraphObjAttrib:
  5210. DEF INPUT PARAM p-object AS CHAR NO-UNDO.
  5211. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5212. DEF INPUT PARAM p-attr AS CHAR NO-UNDO.
  5213. DEF VAR lp-err AS INT NO-UNDO.
  5214. RUN VpSetGraphObjAttr(CAPS(p-object), CAPS(p-group), CAPS(p-attr), OUTPUT lp-err).
  5215. /* Error-Tracking. */
  5216. IF lp-err <> 0 THEN RETURN ERROR "vpr_SetGraphObjAttr: Error".
  5217. END PROCEDURE.
  5218. /*
  5219. * wrapper to keep us from incompatibility with 3.2Beta
  5220. * where this was named ...Attr instead of ..Attrib
  5221. */
  5222. PROCEDURE vpr_SetGraphObjAttr:
  5223. DEF INPUT PARAM p-object AS CHAR NO-UNDO.
  5224. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5225. DEF INPUT PARAM p-attr AS CHAR NO-UNDO.
  5226. RUN vpr_SetGraphObjAttrib(p-object, p-group, p-attr).
  5227. END PROCEDURE.
  5228. /* get the leftmost position of the bounding rectangle around a group */
  5229. PROCEDURE vpr_FetchGroupHPos:
  5230. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5231. DEF OUTPUT PARAM p-hpos AS INT NO-UNDO.
  5232. RUN VpGetGroupHPos(CAPS(p-group), OUTPUT p-hpos).
  5233. IF p-hpos = -1 THEN RETURN ERROR "FetchGroupHPos: Error".
  5234. END.
  5235. /* get the width of the bounding rectangle around a group */
  5236. PROCEDURE vpr_FetchGroupWidth:
  5237. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5238. DEF OUTPUT PARAM p-width AS INT NO-UNDO.
  5239. RUN VpGetGroupHPos(CAPS(p-group), OUTPUT p-width).
  5240. IF p-width = -1 THEN RETURN ERROR "FetchGroupHPos: Error".
  5241. END.
  5242. /*
  5243. * SetCellLineSpacing - Set the space between lines
  5244. */
  5245. PROCEDURE vpr_SetCellRotation:
  5246. DEF INPUT PARAM p-cell AS CHAR NO-UNDO.
  5247. DEF INPUT PARAM p-group AS CHAR NO-UNDO.
  5248. DEF INPUT PARAM p-angle AS DEC NO-UNDO.
  5249. DEF VAR p-err AS INT NO-UNDO INIT 0.
  5250. RUN VpSetCellRotation (CAPS(p-cell), CAPS(p-group), p-angle, OUTPUT p-err).
  5251. IF p-err <> 0 THEN RETURN ERROR "SetCellRotation: Error".
  5252. END.
  5253. PROCEDURE vpr_GetDefaultPrinter:
  5254. DEF OUTPUT PARAM p-printer AS CHAR NO-UNDO.
  5255. DEF VAR p-memory AS MEMPTR NO-UNDO.
  5256. RUN _VpGetDefaultPrinter(OUTPUT p-memory).
  5257. p-printer = GET-STRING(p-memory, 1).
  5258. END.
  5259. PROCEDURE vpr_SetDefaultPrinter:
  5260. DEF INPUT PARAMETER p-name AS CHAR.
  5261. DEF OUTPUT PARAMETER p-ret AS INTEGER.
  5262. RUN _VpSetDefaultPrinter(p-name, OUTPUT p-ret).
  5263. END.
  5264. PROCEDURE vpr_SetTempDir:
  5265. DEFINE INPUT PARAMETER p-tmpdir AS CHARACTER NO-UNDO.
  5266. DEFINE VARIABLE p-err AS INTEGER NO-UNDO.
  5267. RUN VpSetTempDir(p-tmpdir, OUTPUT p-err).
  5268. IF p-err <> 0 THEN RETURN ERROR "SetTempDir: Error".
  5269. END.
  5270. /*
  5271. * Configuration file included by viper.p.
  5272. * Allows user to configure certain aspects of
  5273. * viper
  5274. */
  5275. /*
  5276. &IF DEFINED(Delimiter) > 0 &THEN
  5277. &UNDEFINE Delimiter
  5278. &ENDIF
  5279. */