|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 12836 (0x3224)
Types: TextFile
Names: »subs7.f«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦this⟧ »EUUGD11/euug-87hel/sec1/utep/subs7.f«
**************************************************************************
*
* subroutine geninfo does the following:
* (general information)
* + display to the user some general info
* - name of routine (IDBR).
* (Interactive Drawing Board Routine)
* - number of drawing pages/user.
* - number of pages that can be saved /user.
* - number of items/page.
**************************************************************************
subroutine geninfo
write(0,10)
10 format(5x,'This is an interactive drawing board routine.')
c
write(0,20)
20 format(5x,'You have five 10x10 pages with bottom left point',
* /,5x,'coordinates (0,0)')
c
write(0,30)
30 format(5x,'You are allowed to draw up to 20 items ',/,5x,
* 'on each page and save up to five images',/)
return
end
**************************************************************************
*
* subroutine draw does the following:
*
* + guide the user through the drawing
* session
* - supply blank pages
* - recall saved pages
* - image editing
* - check if limits on number of image
* items (numitms) or number of drawing
* pages is going to be violated ,if so
* display warning messages (else)
* continue drawing.
* - display error messages when necessary
* and allows the user to try again to
* to input correct info.
*
**************************************************************************
subroutine draw
common/poly/iflag,numpoly,ifivply(5)
common/num/numitms
character*1 answer1,answer
c
c
c supply of drawing pages/user/drawing session
c are five pages,if all used display a warning
c message and give user choice of recalling
c a saved image (else) continue drawing.
c
c
do 90 i=1,6
if(i.eq.6)then
write(0,10)
10 format(5x,'WARNING:You have used the'
* 'limit of drawing pages/user')
call recall
else
call recall
call blnkpag
read(5,60) answer1
60 format(a1)
c
c do you want a blank page to draw on?
c
if(answer1.eq.'y' .or. answer1.eq.'Y')then
c
c (YES) need a blank page.
c
call ready
call sat
c
c number of items user can draw on one single
c page are (20) items,if number of image items within
c limits continue drawing (else) display a
c warning message (no more drawing) then give
c user the choice of editing image.
c
do 20 j=1,30
if(numitms.lt.20)then
c
c ask if user want to continue drawing on
c current page.
c
if(iflag.eq.0)then
call samepag
read(5,80)answer
80 format(a1)
else
answer='y'
endif
do 40 k=1,3
if(answer.eq.'y' .or. answer.eq.'Y')then
c
c (YES) want to draw an item,display item menu
c , draw item.
c
call itmmenu
call ditem
k=4
elseif(answer.eq.'n' .or. answer.eq.'N')then
c
c (NO) give a chioce of editing image
c
k=4
j=31
call edit
else
c
c (OTHERWISE) display error message--try again
c
call error(1)
endif
40 continue
else
write(0,30)
30 format(5x,'WARNING:You have used the'
* 'limit of items/page')
call edit
j=31
endif
20 continue
elseif(answer1.eq.'n' .or. answer1.eq.'N')then
c
c (NO) don't need a blank page
c
i=7
else
c
c (OTHERWISE)--error-->(undefined answer try again)
c
call error(1)
endif
endif
90 continue
return
end
**************************************************************************
*
* subroutine blnkpag does the following:
* (blank page)
* + display a question on the terminal.
* + expect an answer.
**************************************************************************
subroutine blnkpag
write(0,10)
10 format(5x,'If you want to continue you will be supplied',/,5x,
* 'with a blank page (else) this drawing session will be',/,5x,
* 'terminated, answer: y-yes , n-no')
return
end
***************************************************************************
*
* subroutine samepag does the following:
* (same page)
* + display a question on the terminal.
* + expect an answer.
***************************************************************************
subroutine samepag
write(0,10)
10 format(5x,'Do you want to continue drawing on current page',/,5x,
* 'answer: y-yes , n-no')
return
end
**************************************************************************
*
* subroutine change(ans) does the following:
* (local change - item editing)
* + display a question on terminal.
* + expect an answer.
* + if positive answer, display an informative
* message ( user have 3 chances to
* change item correctly).
* else (negative answer) return
**************************************************************************
subroutine change(ans)
character*1 ans
c
write(0,10)
10 format(5x,'Do you want to do some changes on this item ',/,5x,
* ' answer: y-yes , n-no')
c
read(5,20)ans
20 format(a1)
if(ans.eq.'y' .or. ans.eq.'Y')then
write(0,30)
30 format(5x,'For each single change you have three chances',/
* ,5x,'to input the correct data else no change will be issued')
endif
return
end
*************************************************************************
*
* subroutine edit does the following:
* (image editing - globle change)
*
* + does user want to do globle change.
* - yes->
* * set image change flag (icflag)
* * list image items
* * pick one item by number
* * display globle change menu
* of commands (gcmenu)
* * read one command and process it
* - no->
* * choice of saving created image
* - otherwise->
* * error- undefined answer
* try again.
*************************************************************************
subroutine edit
common/prec/ipgrec,icflag
common/gc/igcflg
character*1 answer,ans1
integer number
c
do 40 k=1,20
do 50 m=1,3
igcflg=0
call gchange(answer)
if(answer.eq.'y' .or. answer.eq.'Y')then
icflag=1
call lsitems
call pickitm(number)
do 30 i=1,3
if(igcflg.eq.1)then
i=4
else
do 20 j=1,3
c Remind user that this is image editing session.
write(0,10)
10 format(5x,'You are in image editing session',/)
call change(ans1)
if(ans1.eq.'y'.or.ans1.eq.'Y')then
call gcmenu
call rdcomnd(number)
j=4
elseif(ans1.eq.'n'.or.ans1.eq.'N')then
j=4
i=4
else
call error(1)
endif
20 continue
endif
30 continue
m=4
elseif(answer.eq.'n' .or. answer.eq.'N')then
call savpag
k=21
m=4
else
call error(1)
endif
50 continue
40 continue
return
end
************************************************************************
*
* subroutine fclose(ipnumb) does the following:
* (close files)
*
* + close the files that contain image number
* (ipnumb).
* - inquire about units
* - close and save image files.
*************************************************************************
subroutine fclose(ipnumb)
integer u1,u2,ipnumb
c
call whichu(ipnumb,u1,u2)
call csif(u1,u2)
return
end
***************************************************************************
*
* subroutine savpag does the following:
* (save page)
*
* + user have a choice of saving created
* image.
* + yes->
* * new page-- save it
* * recalled page
* - changed-- resave it
* - unchanged-- continue
* + no->
* * continue
* + otherwise->
* * error-undefined answer
* try again.
***************************************************************************
subroutine savpag
common/prec/ipgrec,icflag
character*1 anspg
c
do 30 i=1,4
write(0,10)
10 format(5x,'Do you want to save image,answer:y-yes,n-no')
read(5,20)anspg
20 format(a1)
if(anspg.eq.'y'.or.anspg.eq.'Y')then
if(ipgrec.eq.0)then
call snpage
else
if(icflag.eq.1)then
call resave
endif
endif
ipgrec=0
icflag=0
i=5
elseif(anspg.eq.'n'.or.anspg.eq.'N')then
if(ipgrec.gt.0)then
call fclose(ipgrec)
ipgrec=0
icflag=0
endif
i=5
else
call error(1)
endif
30 continue
call pgdone
call newpage
return
end
****************************************************************************
*
* subroutine recall does the following:
* (recall image)
*
* + user have a choice of recalling a
* saved image.
* + yes->
* * input page number
* * open its files
* * image exist?
* - yes-> display it
* look at it
* change it if needed
* close its files
* - no-> continue
* - otherwise->
* error-undefined answer try
* again.
****************************************************************************
subroutine recall
common/prec/ipgrec,icflag
common/pnum/numspg
character*1 answer
integer ansfil,number
c
call howmpg
do 40 j=1,numspg
do 30 i=1,4
write(0,10)
10 format(5x,'Do you want to call a saved image,answer:y-yes,n-no')
read(5,20)answer
20 format(a1)
if(answer.eq.'y'.or.answer.eq.'Y')then
call whichp(number)
ipgrec=number
call fopen(ansfil)
if(ansfil.eq.1)then
call dsimag
else
call error(9)
endif
i=5
elseif(answer.eq.'n'.or.answer.eq.'N')then
i=5
j=numspg+1
else
call error(1)
endif
30 continue
40 continue
return
end
***************************************************************************
*
* subroutine dsimag does the following:
* (display recalled image)
*
* + image number in globle variable (ipgrec)
* + inquire about its units
* + read its files back
* + display image on AED screen
* + edit image if requested
***************************************************************************
subroutine dsimag
integer u1,u2
common/device/lastx,lasty,numpag
common/prec/ipgrec,icflag
c
call clr
call ready
call whichu(ipgrec,u1,u2)
call rdjpg(u1)
call rdinf(u2)
call dspage
call edit
numpag=numpag-1
return
end
***************************************************************************
*
* subroutine fopen(reply) does the following:
* (files open)
* + recalled image number in globle var
* (ipgrec)
* + files exist?
* - yes->
* * open files for access
* * reply=1
* - no->
* * reply=0
***************************************************************************
subroutine fopen(reply)
common/prec/ipgrec,icflag
integer reply,u1,u2
character*6 f1,f2
logical creatd
c
call whichu(ipgrec,u1,u2)
call whichf(ipgrec,f1,f2)
inquire(file=f1,exist=creatd)
if(creatd)then
call oif(u1,u2,f1,f2)
reply=1
else
reply=0
endif
return
end
****************************************************************************
*
* subroutine resave does the following:
* (resave recalled image)
*
* + recalled image number in globle var
* (ipgrec)
* + set its files initial position to
* its first record
* + save image into files
****************************************************************************
subroutine resave
common/prec/ipgrec,icflag
integer u1,u2
c
call whichu(ipgrec,u1,u2)
rewind(u1)
call savjpg(u1)
rewind(u2)
call savinf(u2)
call fclose(ipgrec)
return
end
**************************************************************************
*
* subroutine dspage does the following:
* (draw segmented saved page)
* - draw the recalled segmented page one
* segment at a time according to their
* priorities.
*
* + check if recalled image is empty
* by any chance then display it as is.
* + (else) if image has more than one item
* in it then display image as described
* above.
*
**************************************************************************
subroutine dspage
common/num/numitms
common/table/tblitms(20,10),icolor(20),items(20)
character*1 items
c
call drawp
do 250 i=1,numitms
call tempinf(i)
call sndscd(i)
250 continue
return
end