LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (December 1996, week 5)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:   Mon, 30 Dec 1996 20:27:33 -0500
Reply-To:   Kenneth Hobson <UMTR121@DSIBM.OKLADOT.STATE.OK.US>
Sender:   "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>
From:   Kenneth Hobson <UMTR121@DSIBM.OKLADOT.STATE.OK.US>
Organization:   The University of Oklahoma (USA)
Subject:   Fsedit field validation-lists?

Using SAS v6.08 on MVS.

I want to improve field validation on an fsedit screen. I think that a persistant list approach might work faster. I have 10 fsedit screens that will call the scl entry to color the failed fields red.

PROBLEM: Make more efficient field validation code. The field should turn red and reverse if it fails specification limits as set in the 'liqv.af.specs.scl' entry. QUESTION: Anyone have a small example to get me going? I have made small lists but that was in the fsedit code. I want the fsedit scl to call an .scl entry to build the list for use by that user. The session is a remote session.

A shortened version of my current code that works is below: It has fsedit and an scl code sections.

/* fsedit code below */ INIT: control enter always term; MenuList=makelist(); MenuList=insertc(MenuList,'Pass',-1,'PASS'); MenuList=insertc(MenuList,'Fails',-1,'FAILS'); MenuList=insertc(MenuList,'Information',-1,'INFO'); MenuList=insertc(MenuList,'Contaminated',-1,'CONTA'); MenuList=insertc(MenuList,'Trash',-1,'TRASH'); return;

MAIN: select(substr(dispo,1,1)); when('P') dispo='PASS'; when('F') dispo='FAILS'; when('I') dispo='INFO'; when('C') dispo='CONTA'; when('T') dispo='TRASH'; when('?') do; MenuItem=popmenu(MenuList); if MenuItem then dispo=nameitem(MenuList,MenuItem); end; otherwise;end; CHECK: call display('liqv.af.specs.scl', mtltype,acpen77,acduc77,acsol,acsg,acfp, acvis140,acvis275,acst,acrloh,acrduc77,acrvi140, cbsg,cbfp,cbwc,cbkv140,cbd437,cbd500,cbd600,cbd680, cbrv140,cbrp77,cbrs,cbrst,emsg,emfv77,emfv122,emrd,emre, emsieve,emss,emdm,emod,emph,emrv140,emrp77,emrd77, emrd392,emrs,emrfv180,emrsp,emrer,emrst,pmip77, pmip392,pmis,pmisg,pmifp,pmiv140,pmiv275,pmisep, pmisp,pmirer,pmirp392,pmiip77,pmiid392,pmiisol,pmiisg, pmiifp,pmiiv140,pmiiv275,pmiird39,pmiirvis,dispo); link COLORIT; return;

COLORIT: do i=1 to symget('n'); opspec=open('work.specs','i'); any=attrn(opspec,'any'); if any then do; rc=fetchobs(opspec,i);fspec=getvarc(opspec,1); rc=field('color red reverse',fspec); alarm; end; rc=close(opspec); end; return;

TERM: return;

/* liqv.af.specs.scl code below */ entry mtltype $ 10 acpen77 8 acduc77 $ 10 acsol acsg 8 acfp $ 10 acvis140 acvis275 8 acst $ 10 acrloh 8 acrduc77 $ 10 acrvi140 cbsg 8 cbfp $ 10 cbwc cbkv140 cbd437 cbd500 cbd600 cbd680 cbrv140 cbrp77 cbrs 8 cbrst $ 8 emsg emfv77 emfv122 emrd emre emsieve emss emdm 8 emod emph $ 10 emrv140 emrp77 8 emrd77 emrd392 $ 10 emrs emrfv180 emrsp emrer 8 emrst $ 10 pmip77 pmip392 pmis pmisg 8 pmifp $ 10 pmiv140 pmiv275 8 pmisep $ 10 pmisp pmirer pmirp392 pmiip77 8 pmiid392 $ 10 pmiisol pmiisg 8 pmiifp $ 10 pmiiv140 pmiiv275 8 pmiird39 $ 10 pmiirvis 8 dispo $ 5; INIT: if dispo eq 'FAILS' then dispo=''; rc=delete('work.spec'); rc=copy('user.specs','work.specs'); if dispo eq 'INFO' or dispo eq 'TRASH' or dispo eq 'CONTA' then info=1; return;

TERM: select(mtltype); when('AC-20') do; if acpen77 < 60 or acpen77 > 100 then do; if not info then dispo='FAILS'; submit continue; data work.spec; length fspec $ 8; fspec='ACPEN77'; run; data work.specs;set work.specs work.spec; run; endsubmit; end; if acvis140 < (2000-400) or acvis140 > (2000+400) then do; if not info then dispo='FAILS'; submit continue; data work.spec; length fspec $ 8; fspec='ACVIS140'; run; data work.specs;set work.specs work.spec; run; endsubmit; end; end; otherwise;end;

if dispo ne 'FAILS' and dispo ne 'INFO' and dispo ne 'TRASH' and dispo ne 'CONTA' then dispo='PASS';

submit continue;data _null_;set work.specs end=last; if last then call symput('n',_n_); run;endsubmit; return; ////////////////////////************///////////////////// I shortened the code for this post to conserve space. TIA ************************************************************************ *Work email: umtr121@dsibm.okladot.state.ok.us * *Home email: khobson@telepath.com * *Home Pg: http://www.telepath.com/khobson * *CO-SAS Pg: http://www.telepath.com/khobson/sas/sas.html * *OKDOT Pg: http://www.okladot.state.ok.us * *Work Phone: 405-521-2677 Fax: 405-522-0552 * ************************************************************************


Back to: Top of message | Previous page | Main SAS-L page