DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T s

⟦8dfeda14b⟧ TextFile

    Length: 14102 (0x3716)
    Types: TextFile
    Names: »subsb.f«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/utep/subsb.f« 

TextFile

****************************************************************************
*
* subroutine spfyitm does the following:
* ( specify item)
*    + items position,measurment,color
*      interior saved in items (twb).
****************************************************************************
	subroutine spfyitm
c
	call itmpnt
	call itmmes
	call itmclr
	call itmint
	return
	end
*******************************************************************************
*
* subroutine respfy(element) does the following:
* (respecify item - item editing)
*     + display local change menu
*     + read command
*     + valid command
*      - yes-->
*        * command--'p'
*          # save old position
*          # read and store new position
*        * command--'c'
*          # read and save new color
*        * command--'m'
*          # read and save new measurment
*      - no-->
*        * error--try again
*******************************************************************************
	subroutine respfy(element)
	character*1 element
	common/info/color,len,width,x1,y1,x2,y2,item
	common/ln/xtemp,ytemp
	real xtemp,ytemp,len,width,x1,y1,x2,y2
	integer color
	character*1 item
c
                    call lcmenu
	            read(5,23)element
23                  format(a1)
	if(element.eq.'p' .or. element.eq.'P')then
	            xtemp=x1
	            ytemp=y1
	            call itmpnt
	            element='p'
	            call upinfo(element)
	elseif(element.eq.'c' .or. element.eq.'C')then
	            call itmclr
	            element='c'
	elseif(element.eq.'m' .or. element.eq.'M')then
	            call itmmes
	            element='m'
	else
	            call error(5)
	endif
	return
	end
******************************************************************************
*
* subroutine dsplyit(segno) does the following:
* ( display item)
*     + construct segment in (df)
*     + save segment begin and end position
*       in segment table
*     + update (df) next available space counter
*       (ifree)
*     + send segment to screen
******************************************************************************
	subroutine dsplyit(segno)
	integer segno
	common/table/tblitms(20,10),icolor(20),items(20)
	common/contr/icnt
	common/space/ifree
	character*1 items
c
	      tblitms(segno,8)=icnt
	      call showitm
	      tblitms(segno,9)=icnt-1
	      call eraitm(segno)
	      icnt=tblitms(segno,8)
	        call showitm
	      tblitms(segno,9)=icnt-1
	      ifree=icnt
	      call sendcod(segno)
	return
	end
****************************************************************************
*
* subroutine procitm does the following:
* (process item)
*     + specify item
*     + transfer items (twb) into (pwb)
*     + check items overlapping and store
*       info in segment overlapping table
*     + display item on screen
*     + item editing?
*      - yes-->
*        * erase item
*        * restructure image properly
*        * respecify item
*        * valid specification?
*         - yes-->
*          # update segment table 
*          # check items new overlapping
*            and store into segment overlapping
*            table
*          # reconstruct segment due to changes
*          # display segment on screen
*         - no-->
*          # error--try again
*       - no-->
*        * return
*       - otherwise
*        * error--try again
****************************************************************************
	subroutine procitm
	common/table/tblitms(20,10),icolor(20),items(20)
	common/num/numitms
	common/contr/icnt
	common/ln/xtemp,ytemp
	common lstovlp(380),jo
	character*1 feature,answer,items
	real xtemp,ytemp
	integer ans2,entry
c
	call spfyitm
	call wtitems
	call dsplyit(numitms)
	call ckovlap(numitms)
	  do 14 i=1,3
	    do 34 k=1,4
	        call change(answer)
	        if(answer.eq.'y'.or.answer.eq.'Y')then
	          call eraitm(numitms)
	          call issovlp(numitms)
	          if(lstovlp(1).ne.0)then
	          call search(numitms,entry)
	          call dlentry(entry)
	          jo=jo-1
	          call sendsgs
	          endif
	          call tempinf(numitms)
	          call respfy(feature)
	            do 24 j=1,4
	              call ckchang(numitms,feature,ans2)
	              if(ans2.eq.0)then
	               call uptable(numitms,feature)
	               call blnkrow(numitms)
	               call ckovlap(numitms)
	               icnt=tblitms(numitms,8)
	               call showitm
	               tblitms(numitms,9)=icnt-1
	               call eraitm(numitms)
	               icnt=tblitms(numitms,8)
	               call showitm
	               tblitms(numitms,9)=icnt-1
	               call sendcod(numitms)
	               j=5
	              else
	               call error(8)
	               call tempinf(numitms)
	               if(feature.eq.'p')then
	                 xtemp=x1
	                 ytemp=y1
	                 call itmpnt
	                 call upinfo(feature)
	               else
	                 call itmmes
	               endif
	              endif
24	            continue
	            k=5
	        elseif(answer.eq.'n'.or.answer.eq.'N')then
	          i=4
	          k=5
	        else
	          call error(1)
	        endif
34	        continue
14	  continue
	return
	end
*****************************************************************************
*
* subroutine ckchang(itsnum,chgelmt,yesorno) does the following:
* (check item change for validity)
*      + items number (itsnum)
*      + command issued (chgelmt)
*      + validity answer (yesorno)
*****************************************************************************
	subroutine ckchang(itsnum,chgelmt,yesorno)
	character*1 chgelmt
	integer yesorno,itsnum
c
	if(chgelmt.eq.'p')then
	    call itmptin(itsnum,yesorno)
	elseif(chgelmt.eq.'m')then
	    call itmmsin(itsnum,yesorno)
	else
	    yesorno=0
	endif
	return
	end
******************************************************************************
*
* subroutine itmptin(num1,ans1) does the following:
* (item new position inbounds)
*     + items number (num1)
*     + validity of position answer (ans1)
*       - valid--return (ans1=1)
*       - unvalid--return (ans1=0)
*     + method used to check validity of position
*       (Boxing of image items)
******************************************************************************
	subroutine itmptin(num1,ans1)
	integer num1,ans1
	common/info/color,len,width,x1,y1,x2,y2,item
	common/table/tblitms(20,10),icolor(20),items(20)
	character*1 items,item
	real x1,y1,x2,y2,len,width
	real itmbox(8),x1temp,y1temp,x2temp,y2temp
	integer color
c
	x1temp=tblitms(num1,2)
	y1temp=tblitms(num1,3)
	x2temp=tblitms(num1,4)
	y2temp=tblitms(num1,5)
	tblitms(num1,2)=x1
	tblitms(num1,3)=y1
	tblitms(num1,4)=x2
	tblitms(num1,5)=y2
	call boxsitm(num1,itmbox)
	call boxout(itmbox,ans1)
	tblitms(num1,2)=x1temp
	tblitms(num1,3)=y1temp
	tblitms(num1,4)=x2temp
	tblitms(num1,5)=y2temp
	return
	end
*****************************************************************************
*
* subroutine itmmsin(num2,ans2) does the following:
* (items new position inbounds)
*      + item number (num2)
*      + validity of new position answer (ans2)
*        - valid--returns (ans2=1)
*        - unvalid--returns (ans2=0)
*      + method used to check validity of measurment
*        (Boxing of image items)
*****************************************************************************
	subroutine itmmsin(num2,ans2)
	integer num2,ans2
	common/info/color,len,width,x1,y1,x2,y2,item
	common/table/tblitms(20,10),icolor(20),items(20)
	real x1,y1,x2,y2,len,width
	character*1 items,item
	real itmbox(8),sltemp,x2temp,y2temp
	integer color
c
	sltemp=tblitms(num2,1)
	x2temp=tblitms(num2,4)
	y2temp=tblitms(num2,5)
	tblitms(num2,1)=len
	tblitms(num2,4)=x2
	tblitms(num2,5)=y2
	call boxsitm(num2,itmbox)
	call boxout(itmbox,ans2)
	tblitms(num2,1)=sltemp
	tblitms(num2,4)=x2temp
	tblitms(num2,5)=y2temp
	return
	end
****************************************************************************
*
* subroutine uptable(number,element) does the following:
* (update segment table)
*     + update segment table after an item has under gone
*       a change
*     + items number (number)
*     + command issued (element)
*     + update segment table entry (number) accordingly
*       (by accessing items (twb) and (pwb))
*     + list updated segment table
****************************************************************************
	subroutine uptable(number,element)
	common/table/tblitms(20,10),icolor(20),items(20)
	common/info/color,len,width,x1,y1,x2,y2,item
	character*1 items,item,element
	real x1,y1,x2,y2,len,width
	integer color,number
c
	if(element.eq.'p')then
	tblitms(number,2)=x1
	tblitms(number,3)=y1
	  if(items(number).eq.'s' .or. items(number).eq.'r'.or.
     *       items(number).eq.'l')then
	    tblitms(number,4)=x2
	    tblitms(number,5)=y2
	  endif
	elseif(element.eq.'c')then
	icolor(number)=color
	elseif(element.eq.'m')then
	tblitms(number,1)=len
	  if(items(number).eq.'s'.or.items(number).eq.'r'.or.
     *       items(number).eq.'l')then
	     tblitms(number,4)=x2
	     tblitms(number,5)=y2
	  endif
	else
	    continue
	endif
	    call lsitems
	return
	end
****************************************************************************
*
* subroutine upinfo(elmnt) does the following:
* (update information in (twb)
*      + command issued (elmnt)
*      + check items type and update info
*        accordingly
****************************************************************************
	subroutine upinfo(elmnt)
	common/info/color,len,width,x1,y1,x2,y2,item
	common/ln/xtemp,ytemp
	character*1 item,elmnt
	real x1,y1,x2,y2,len,width,xtemp,ytemp,xdiff,ydiff
	integer color
c
	if(item.eq.'s'.and.elmnt.eq.'p')then
	          x2=x1+len
	          y2=y1+len
	elseif(item.eq.'r'.and.elmnt.eq.'p')then
	          x2=x1+width
	          y2=y1+len
	elseif(item.eq.'l'.and.elmnt.eq.'p')then
	          xdiff=x2-xtemp
	          ydiff=y2-ytemp
	          x2=xdiff+x1
	          y2=ydiff+y1
	else
	          continue
	endif
	return
	end
*****************************************************************************
*
* subroutine tempinf(one) does the following:
* (temporary transfer of information)
*      + items number (one)
*      + copy items information from (pwb) to
*        (twb)
*****************************************************************************
	subroutine tempinf(one)
	common/table/tblitms(20,10),icolor(20),items(20)
	common/info/color,len,width,x1,y1,x2,y2,item
	common/minfo/sorhitm
	character*1 items,item
	real x1,y1,x2,y2,len,width
	integer color,one
c
	item=items(one)
	len=tblitms(one,1)
	x1=tblitms(one,2)
	y1=tblitms(one,3)
	x2=tblitms(one,4)
	y2=tblitms(one,5)
	color=icolor(one)
	sorhitm=tblitms(one,7)
	if(item.eq.'r')then
	    width=x2-x1
	endif
	return
	end
*******************************************************************************
*
* subroutine updf(segnum) does the following:
*  (update display file)
*     + after a segment deletion update (df)
*     + segment number (segnum)
*     + delete segment code from (df)
*     + adjust (df) next available space (ifree)
*******************************************************************************
	subroutine updf(segnum)
	integer segnum
	common/table/tblitms(20,10),icolor(20),items(20)
	common/num/numitms
	common/space/ifree
	common/page/jpage(6000)
	character*1 items,jpage
	integer begin,end,idspac
c
	begin=tblitms(segnum,8)
	end=tblitms(segnum,9)
	idspac=end-begin+1
27	if(end.lt.ifree)then
	    jpage(begin)=jpage(end+1)
	    begin=begin+1
	    end=end+1
	    go to 27
	else
	    ifree=begin-1
	do 20 i=segnum+1,numitms
	   tblitms(i,8)=tblitms(i,8)-idspac
	   tblitms(i,9)=tblitms(i,9)-idspac
20	continue
	endif
	return
	end
****************************************************************************
*
* subroutine srchtbl(iclrbg) does the following:
*  ( search segment table )
*       + search segment table for segment background
*         color
*       + segment exist
*        - yes-->
*            * return value in (iclrbg)
*        - no-->
*            * return color black
****************************************************************************
	subroutine srchtbl(iclrbg)
	integer iclrbg
	common/table/tblitms(20,10),icolor(20),items(20)
	common/num/numitms
	character*1 items
c
	do 33 i=1,numitms
	  if(items(i).eq.'b')then
	     iclrbg=icolor(i)
	     return
	  endif
33	continue
c if background segment is not there then default iclrbg=0 (black).
	iclrbg=0
	return
	end
****************************************************************************
*
* subroutine intrprt(istart,iend) does the following:
*  (interpret code)
*      + interpret (df) code on the (AED) screen
*        starting at position (istart) and ending
*        at position (iend)
****************************************************************************
	subroutine intrprt(istart,iend)
	common/page/jpage(6000)
	character*1 jpage
c
	do 44 i=istart,iend
	     call prnt(jpage(i))
44	continue
	return
	end
****************************************************************************
*
* subroutine itmint does the following:
*  (items interior)
*      + interactivly ask user if current 
*        item need to be filled or outlined 
*      +  yes-->  fill it
*      +  no-->   outline
*      +  otherwise--> error-try again
*      +  lines considered filled items
****************************************************************************
	subroutine itmint
	common/info/color,len,width,x1,y1,x2,y2,item
	common/minfo/sorhitm
	character*1 item,ans
	real len,width,x1,y1,x2,y2,sorhitm
	integer color
c
	if(item.ne.'l')then
	  do 22 i=1,4
	     write(0,10)
10	     format(5x,'Do you want this item to be filled with color',/,
     *       5x,'answer: y-yes , n-no')
	     read(5,20)ans
20	     format(a1)
	     if(ans.eq.'y'.or.ans.eq.'Y')then
	           sorhitm=1.0
	           i=5
	     elseif(ans.eq.'n'.or.ans.eq.'N')then
	           sorhitm=0.0
	           i=5
	     else
	           call error(1)
	     endif
22	  continue
	else
	  sorhitm=1.0
	endif
	return
	end