Hello.
I’m using pvf 13.10, win7.
Building of my application finishes with an error. It fails on the following source:
module gui_support
implicit none
save
Integer :: id_lab_step_indicator
Integer :: ID_BOX_SPECTOR_WHERE,ID_TXT_BLOCKNR,img,ID_TXT1
Integer :: ID_BUT_FIELDE21, ID_BUT_FIELDE22, ID_BUT_FIELDE23
Integer :: ID_TXT_PSORT, ID_PROGRESS, id_txt_graf_scale
Integer :: id_but_do_round, ID_EXT_FLD_1,ID_EXT_FLD_2, id_close_on_job_finish
Integer :: id_txt_transparency
Integer :: ID_EXT_FLD_2D_1, ID_EXT_FLD_2D_2
Integer :: ID_BUT_EQUIPOTEN2, ID_BUT_POTEN2
Integer :: id_but_equi_color,ID_BOUNDARY_COLOR
Integer :: id_but_equi_draw_ext, id_but_equi_draw_beam
Integer :: ID_TXT9, ID_TXT10
Integer :: ID_BUT_TIM_SPCHARGE,ID_BUT_COMP_CHARGE
Integer :: ID_COMMON_LEFT, ID_COMMON_RIGHT
Integer :: ID_BUT_EMITTANCE
Integer :: common_step_number = 1
Integer :: common_navigation_id = 0
logical :: l_initialized
character (LEN=30) :: namex,namey
logical :: batch_mode = .false.
logical :: working = .false.
external sub_common_graf_step, set_progress_bar
contains
logical function GetIfDoRound
integer :: i
call GWGBUT(id_but_do_round,i)
GetIfDoRound = i.eq.1
end function
!--------------------------------------
Integer function GetKolMoment1
use nakop
integer :: kol_moment1
CALL GWGINT (ID_TXT1,kol_moment1)
if(kol_moment1.EQ.0.or.kol_moment1.gt.kol_moment.or.kol_moment1.gt.kol_moment_max) then
call SWGTXT (ID_TXT1, '???')
print*,'kol_moment1 > kol_moment'
GetKolMoment1=0
else
GetKolMoment1=kol_moment1
end if
end function
!---------------------------------------
Integer function MoveStepLeft(nt)
integer :: nt, n_step, kol_moment1, i
kol_moment1 = GetKolMoment1()
if(kol_moment1.eq.0) then
MoveStepLeft=0
return
endif
CALL GWGINT (ID_TXT10,n_step)
i = nt - n_step
if(i.le.0) i = kol_moment1 + i
MoveStepLeft=i
end function
Integer function MoveStepRight(nt)
integer :: nt, n_ini, n_step, kol_moment1
kol_moment1 = GetKolMoment1()
if(kol_moment1.eq.0) then
MoveStepRight=0
return
endif
CALL GWGINT (ID_TXT9,n_ini)
CALL GWGINT (ID_TXT10,n_step)
if(nt+n_step.LE.kol_moment1) then
MoveStepRight=nt+n_step
else
MoveStepRight=n_ini
end if
end function
integer function GetMovedNt(id, id_left, id_cent, id_right,nt)
integer :: id,id_left,id_cent,id_right,nt,n_ini
if(id.eq.id_left) then
GetMovedNt = MoveStepLeft(nt)
elseif(id.eq.id_cent) then
CALL GWGINT (ID_TXT9,n_ini)
GetMovedNt=n_ini
elseif(id.eq.id_right) then
GetMovedNt = MoveStepRight(nt)
else
GetMovedNt = 0
endif
end function
!------------------------------
subroutine sub_common_graf_step(id)
use nakop
integer :: id,is
if((id.ne.ID_COMMON_LEFT).and.(id.ne.ID_COMMON_RIGHT).and.(id.ne.0)) common_navigation_id = id
if(common_navigation_id.eq.0) return
common_step_number = GetMovedNt(id, ID_COMMON_LEFT, common_navigation_id, ID_COMMON_RIGHT, common_step_number)
if(common_step_number.eq.0) return
if(common_navigation_id.eq.ID_BUT_COMP_CHARGE) then
call sub_composite_charge(common_step_number)
elseif(common_navigation_id.eq.ID_BUT_TIM_SPCHARGE) then
CALL GWGINT (ID_TXT_PSORT, is)
if(saved_particles_count(is,common_step_number).eq.0) then
call dwgmsg('Нет частиц')
else
img = 13
call sub_tim_spacecharge(common_step_number,is)
img = 0
endif
elseif(common_navigation_id.eq.ID_BUT_EQUIPOTEN2) then
call sub_equipoten(common_step_number)
elseif(common_navigation_id.eq.ID_BUT_POTEN2) then
img=11
call sub_poten2(common_step_number)
endif
end
!-------------------------------------------------------------------------------
! положения частиц
subroutine sub_tim_spacecharge(nt,is)
use nakop
use spacecharge
use vlsprm
real :: XRAY(saved_particles_count(is,nt)),Y1RAY(saved_particles_count(is,nt))
integer,intent(in) :: nt, is
if((nt.eq.0).or.(is.eq.0)) return
XRAY= saved_particles_all_steps(is,nt)%P(:,1)
Y1RAY=saved_particles_all_steps(is,nt)%P(:,2)
call risovanie(XRAY,Y1RAY,saved_particles_count(is,nt), nt)
end
!-------------------------------------------------------------------------------
subroutine sub_equipoten(nt)
use SYS
use graphic
use nakop
use fldat
implicit none
Integer :: iii, draw_ext_fld, draw_beam_fld
Type(GraphicDescriptor) :: gd
integer,intent(in) :: nt
call setup_potential_plot(gd, nt)
gd%Title(1) = 'Contour Plot'
gd%Title(2) = ''
gd%Title(3) = 'Potential distribution'
gd%filename = 'potential.tiff'
call GWGBUT(id_but_equi_color,iii)
if(iii.eq.1) then
CALL GRAFIC_COLOR(gd, .true.)
else
CALL GRAFIC_POTENTIAL_LINE(gd)
endif
end subroutine
!--------------------------
subroutine setup_potential_plot(gd, nt)
use SYS
use nakop
use fldat
use graphic
Integer :: draw_ext_fld, draw_beam_fld, nt
Type(GraphicDescriptor), intent(out) :: gd
character (len=10) :: c
call gwgbut(id_but_equi_draw_ext, draw_ext_fld)
call gwgbut(id_but_equi_draw_beam, draw_beam_fld)
gd%Title(4) = ''
if(draw_beam_fld.eq.1) then
call int_to_string(nt,c)
fmatrix=E0_NAKOP(:,:,nt)
gd%Title(4) = 'step '//trim(c)
else
fmatrix = 0
endif
if(draw_ext_fld.eq.1) fmatrix=fmatrix+EXTERNAL_POTENTIAL
gd%A => fmatrix
gd%N = KK1-1
gd%M = KK2-1
gd%VMAX = MAXVAL(fmatrix)
gd%VMIN = MINVAL(fmatrix)
end subroutine
subroutine set_progress_bar(step)
use SYS
integer :: step
character(len=7) :: c1,c2
call intcha(step, sizeof(c1), c1)
call intcha(mouter,sizeof(c2),c2)
call SWGTXT(id_lab_step_indicator, trim(c1)//'/'//trim(c2))
call SWGVAL(ID_PROGRESS, 10+float(step)/float(MOUTER)*89.0)
end subroutine
!--------------------------------
subroutine get_block_sort_input(block_id, is)
use vldat
integer :: isel
integer, intent(out) :: block_id,is
CALL GWGBOX(ID_BOX_SPECTOR_WHERE, ISEL)
select case(ISEL)
case(3)
call gwgint(ID_TXT_BLOCKNR,block_id)
case(2)
block_id = RP_LEFT_BORDER
case(1)
block_id = RP_RIGHT_BORDER
case default
block_id = 0
end select
call gwgint(ID_TXT_PSORT,is)
end subroutine
end module
Compiler invocation done by Visual studio is something like
pgf95 -Hx,123,8 -Hx,123,0x40000 -Hx,0,0x40000000 -Mx,0,0x40000000 -Hx,0,0x20000000 -g -Bstatic -Mbackslash -Mfree -I"G:\varnin\suma_dev\vcproj\suma....\libsuma" -I"g:\program files\pgi\win64\13.10\include" -I"G:\Program Files\PGI\Microsoft Open Tools 11\include" -I"G:\Program Files (x86)\Windows Kits\8.0\Include\shared" -I"G:\Program Files (x86)\Windows Kits\8.0\Include\um" -Minform=warn -Mprof=noccff -o “x64\Debug\gui_support.obj” -Mlarge_arrays -Minfo -c test.f95
And the command output is:
PGF90/x86-64 Windows 13.10-0: compilation aborted
So I can’t even understand, if it is my mistake, or compiler error.