[comp.sources.misc] SWING 07/10

u3369429@murdu.OZ (Michael 'I love VMS' Bednarek) (05/07/87)

$ Name=File'nF
$ Write SYS$Output "creating ",Name
$ Open/Write Out 'Name
$ Open/Read In VMS_SHAR_DUMMY.DUMMY
$Next_Record44: Read/End_Of_File=EOF44 In Record
$ Write Out F$Extract(1,255,Record)
$ Goto Next_Record44
$EOF44: Close Out
$ Close In
$ Delete VMS_SHAR_DUMMY.DUMMY;*
$ Checksum 'Name
$ Success=F$Element(Check_Sum'nF.eq.CHECKSUM$CHECKSUM,",",Pass_or_Failed)
$ Write SYS$ERROR "Checking CHECKSUM. ''Success'"
$ nF=nF+1
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X	Options	/Extend_Source
X	subroutine rename_directory(code)
X	Implicit NONE
X
X	include 'swing.cmn/List'
X	include '($ssdef)/List'
X	include '($smgdef)/List'
X
X	character new_dir*42,key,string*39,message*255,file*255
X	integer*4 ikey,len_string,lib$rename_file,code,parent,
X	1	sys$getmsg,istat,len_message,ipos,from_level,
X	1	old_line,old_level,from_num,from_line,ii,jj
X	logical dir_to_file,finished,check_directory_move
X
X	if (code.eq.20) then
X	 call print_message(' ',0)
X	 call smg$set_cursor_abs(window3,1,1)
X	 call smg$read_string(keyboard,string,
X	1	'Enter new name to give directory: ',39,,,,len_string,,window3)
X
X	 new_dir=' '
X	 jj=0
X
X	 do ii=1,len_string
X	  if   (string(ii:ii).ne.'[' .and. string(ii:ii).ne.']' .and.
X	1	string(ii:ii).ne.'.' .and. string(ii:ii).gt.' ' .and.
X	1	string(ii:ii).ne.';') then
X	   jj=jj+1
X	   new_dir(jj:jj)=string(ii:ii)
X	  end if
X	 end do
X
X	 call str$upcase(new_dir,new_dir)
X
X	 if (jj.ne.0) then
X	  if (dir_to_file(node(node_num).spec,node(node_num).length,
X	1	file,ipos)) then
X	   istat=lib$rename_file(file,new_dir(1:jj)//'.DIR;1',,,1)
X
X	   if (istat.eq.ss$_normal) then
X	    call file_to_dir(file(1:ipos)//new_dir(1:jj)//'.DIR',
X	1	node(node_num).spec,node(node_num).length,node(node_num).name)
X	    parent=0
X	    call move_node(node_num,parent)
X	    call adjust_node_pointers
X	    call load_display
X	    cur_line=node(node_num).line
X	    cur_level=node(node_num).level
X	    call update_screen(cur_line,cur_level)
X	    call print_message('Subdirectory renamed',0)
X	    do_save=.true.
X	   else
X	    call sys$getmsg(%val(istat),len_message,message,%val(1),)
X	    call print_message(message(1:len_message),0)
X	   end if
X	  end if
X	 else
X	  call smg$erase_display(window3)
X	 end if
X
X	else if (code.eq.30) then
X
X	 from_num=node_num
X	 from_line=cur_line
X	 from_level=cur_level
X	 node(from_num).rend=smg$m_reverse+smg$m_blink
X	 call smg$change_rendition(window2,from_line,from_level*17+1,
X	1	1,12,node(from_num).rend)
X	 call print_message('Travel to new parent directory and hit '//
X	1	'RETURN - Hit any other key to abort',0)
X	 call smg$set_cursor_abs(window2,from_line,from_level*17+1)
X
X	 finished=.false.
X	 do while (.not. finished)
X	  call smg$read_keystroke(keyboard,ikey)
X	  old_line=cur_line
X	  old_level=cur_level
X	  old_rend=node(node_num).rend
X	  if (ikey.eq.smg$k_trm_cr .or. ikey.eq.smg$k_trm_enter) then
X	   finished=.true.
X	  else if (ikey.eq.smg$k_trm_up) then
X	   ii=cur_level
X	   jj=cur_line-1
X	   do while (jj.ge.1 .and. node_pointer(ii,jj).eq.0)
X	    jj=jj-1
X	   end do
X	   if (jj.ge.1) cur_line=jj
X	   call update_screen(old_line,old_level)
X
X	  else if (ikey.eq.smg$k_trm_down) then
X	   ii=cur_level
X	   jj=cur_line+1
X	   do while(jj.le.num_lines .and. node_pointer(ii,jj).eq.0)
X	    jj=jj+1
X	   end do
X	   if (jj.le.num_lines) cur_line=jj
X	   call update_screen(old_line,old_level)
X
X	  else if (ikey.eq.smg$k_trm_right) then
X	   ii=cur_level+1
X	   jj=cur_line
X	   do while(ii.le.MAX_LEVELS .and. node_pointer(ii,jj).eq.0)
X	    ii=ii+1
X	   end do
X	   if (ii.le.MAX_LEVELS) cur_level=ii
X	   call update_screen(old_line,old_level)
X
X	  else if (ikey.eq.smg$k_trm_left .and. cur_level.ge.1) then
X	   ii=cur_level-1
X	   jj=cur_line
X	   do while(jj.ge.1 .and. node_pointer(ii,jj).eq.0)
X	    jj=jj-1
X	   end do
X	   if (jj.ge.1) then
X	    cur_level=ii
X	    cur_line=jj
X	   end if
X	   call update_screen(old_line,old_level)
X
X	  else
X	   finished=.true.
X	  end if
X
X	  call smg$set_cursor_abs(window2,cur_line,cur_level*17+1)
X
X	 end do
X
X	 node(from_num).rend=smg$m_reverse
X
X	 call smg$change_rendition(window2,from_line,from_level*17+1,
X	1	1,12,node(from_num).rend)
X
X	 if (ikey.eq.smg$k_trm_cr .or. ikey.eq.smg$k_trm_enter) then
X
X	  if (.not. check_directory_move(from_num,node_num)) then
X	   call update_screen(cur_line,cur_level)
X	   call print_message('Rename would cause too great a '//
X	1	'directory depth',0)
X	   return
X	  end if
X
X	  if (dir_to_file(node(from_num).spec,node(from_num).length,
X	1	file,ipos)) then
X	   istat=lib$rename_file(file,
X	1	node(node_num).spec(1:node(node_num).length)//'*.DIR;1',,,1)
X	   if (istat) then
X	    call move_node(from_num,node_num)
X	    call adjust_node_pointers
X	    call load_display
X	    cur_line=node(from_num).line
X	    cur_level=node(from_num).level
X	    call update_screen(cur_line,cur_level)
X	    call print_message('Subdirectory has been moved',0)
X	    do_save=.true.
X	   else
X	    call sys$getmsg(%val(istat),len_message,message,%val(1),)
X	    call print_message(message(1:len_message),0)
X	   end if
X	  end if
X	 else
X	  call smg$erase_display(window3)
X	 end if
X
X	else
X	 call smg$erase_display(window3)
X	end if
X
X	return
X	end
$ Name=File'nF
$ Write SYS$Output "creating ",Name
$ Open/Write Out 'Name
$ Open/Read In VMS_SHAR_DUMMY.DUMMY
$Next_Record45: Read/End_Of_File=EOF45 In Record
$ Write Out F$Extract(1,255,Record)
$ Goto Next_Record45
$EOF45: Close Out
$ Close In
$ Delete VMS_SHAR_DUMMY.DUMMY;*
$ Checksum 'Name
$ Success=F$Element(Check_Sum'nF.eq.CHECKSUM$CHECKSUM,",",Pass_or_Failed)
$ Write SYS$ERROR "Checking CHECKSUM. ''Success'"
$ nF=nF+1
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X	Options	/Extend_Source
X	subroutine reset_terminal(terminal,char_buffer)
X	Implicit NONE
X
XC ROUTINE USES THE IO$_SETMODE FUNCTION TO SET TERMINAL CHARACTERISTICS
X
X	include '($iodef)/List'
X
Xc LAYOUT OF char_buffer
Xc
Xc --------------------------------------------
Xc |	buffer size	|  type   |   class  |	<- longword
Xc |page len  |	 terminal characteristics    |	<- longword (TTDEF)
Xc |	extended terminal characteristics    |	<- longword (TT2DEF)
Xc --------------------------------------------
Xc 31					     0
X
X	integer*2 iosb(4)
X	integer*4 status,sys$trnlog,sys$assign,sys$qiow,chan
X	integer*4 reset,char_buffer(3)
X	character terminal*(*)
X
X	status=sys$assign(terminal,chan,,)
X
X	status=sys$qiow(%val(1),
X	1	%val(chan),
X	1	%val(io$_setmode),
X	1	iosb,,,
X	1	%ref(char_buffer),
X	1	%val(12),,,,)
X
X	return
X	end
$ Name=File'nF
$ Write SYS$Output "creating ",Name
$ Open/Write Out 'Name
$ Open/Read In VMS_SHAR_DUMMY.DUMMY
$Next_Record46: Read/End_Of_File=EOF46 In Record
$ Write Out F$Extract(1,255,Record)
$ Goto Next_Record46
$EOF46: Close Out
$ Close In
$ Delete VMS_SHAR_DUMMY.DUMMY;*
$ Checksum 'Name
$ Success=F$Element(Check_Sum'nF.eq.CHECKSUM$CHECKSUM,",",Pass_or_Failed)
$ Write SYS$ERROR "Checking CHECKSUM. ''Success'"
$ nF=nF+1
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X	Options	/Extend_Source
X	subroutine set_notab(terminal,save_buffer)
X	Implicit NONE
X
XC ROUTINE USES THE IO$_SETMODE FUNCTION TO SET TERMINAL CHARACTERISTICS
X
X	include '($iodef)/List'
X	include '($ttdef)/List'
X	include '($tt2def)/List'
X
Xc LAYOUT OF char_buffer
Xc
Xc --------------------------------------------
Xc |	buffer size	|  type   |   class  |	<- longword
Xc |page len  |	terminal characteristics     |	<- longword (TTDEF)
Xc |	extended terminal characteristics    |	<- longword (TT2DEF)
Xc --------------------------------------------
Xc 31					     0
X
X	integer*2  iosb(4)
X	integer*4  status,sys$trnlog,sys$assign,sys$qiow,chan
X	integer*4  char_buffer(3),save_buffer(3)
X	character  terminal*(*)
X
X	status=sys$assign(terminal,chan,,)
X
X	status=sys$qiow (%val(1),
X	1	%val(chan),
X	1	%val(io$_sensemode),
X	1	iosb,,,
X	1	%ref(save_buffer),
X	1	%val(12),,,,)
X
X	char_buffer(1)=save_buffer(1)
X	char_buffer(2)=jibclr(save_buffer(2),tt$v_mechtab)	! Clear Bit
X	char_buffer(3)=save_buffer(3)
X
X	status=sys$qiow (%val(1),
X	1	%val(chan),
X	1	%val(io$_setmode),
X	1	iosb,,,
X	1	%ref(char_buffer),
X	1	%val(12),,,,)
X
X	return
X	end
$ Name=File'nF
$ Write SYS$Output "creating ",Name
$ Open/Write Out 'Name
$ Open/Read In VMS_SHAR_DUMMY.DUMMY
$Next_Record47: Read/End_Of_File=EOF47 In Record
$ Write Out F$Extract(1,255,Record)
$ Goto Next_Record47
$EOF47: Close Out
$ Close In
$ Delete VMS_SHAR_DUMMY.DUMMY;*
$ Checksum 'Name
$ Success=F$Element(Check_Sum'nF.eq.CHECKSUM$CHECKSUM,",",Pass_or_Failed)
$ Write SYS$ERROR "Checking CHECKSUM. ''Success'"
$ nF=nF+1
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X	Options	/Extend_Source
X	subroutine sm_allow_repaint
X	Implicit NONE
X
X	include 'swing.cmn/List'
X
X	integer  address
X	external sm_repaint_screen
X
X	address=%loc(sm_repaint_screen)
X	call smg$set_out_of_band_asts(board_id,'800000'x,%val(address))
X
X	return
X	end
$ Name=File'nF
$ Write SYS$Output "creating ",Name
$ Open/Write Out 'Name
$ Open/Read In VMS_SHAR_DUMMY.DUMMY
$Next_Record48: Read/End_Of_File=EOF48 In Record
$ Write Out F$Extract(1,255,Record)
$ Goto Next_Record48
$EOF48: Close Out
$ Close In
$ Delete VMS_SHAR_DUMMY.DUMMY;*
$ Checksum 'Name
$ Success=F$Element(Check_Sum'nF.eq.CHECKSUM$CHECKSUM,",",Pass_or_Failed)
$ Write SYS$ERROR "Checking CHECKSUM. ''Success'"
$ nF=nF+1
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X	Options	/Extend_Source
X	subroutine sm_repaint_screen
X	Implicit NONE
X	include 'swing.cmn/List'
X	call smg$repaint_screen(board_id)
X	return
X	end