diff --git a/source_code/version2.2_windows/filesave.f90 b/source_code/version2.2_windows/filesave.f90 new file mode 100644 index 0000000000000000000000000000000000000000..12bc78df3e9b4f42f4bfc0ef3e7c04f30c639834 --- /dev/null +++ b/source_code/version2.2_windows/filesave.f90 @@ -0,0 +1,88 @@ +!*****************************************************************! +!* *! +!* 4C (FORESEE) Simulation Model *! +!* *! +!* *! +!* Subroutines for: *! +!* - windows shell - *! +!* *! +!* contains: *! +!* FileSave *! +!* Copyright (C) 1996-2018 *! +!* Potsdam Institute for Climate Impact Reserach (PIK) *! +!* Authors and contributors see AUTHOR file *! +!* This file is part of 4C and is licensed under BSD-2-Clause *! +!* See LICENSE file or under: *! +!* http://www.https://opensource.org/licenses/BSD-2-Clause *! +!* Contact: *! +!* https://gitlab.pik-potsdam.de/XXXXXXXXXXXXXXXXXXXXX *! +!* *! +!*****************************************************************! + +Subroutine FileSave (file_spec, filter_spec) + +! Following example of calling the Win32 API routine GetOpenFileName + +use comdlg32 +!use dflib ! In case QuickWin is used +implicit none + +! Declare structure used to pass and receive attributes +! +type(T_OPENFILENAME) ofn + +! Declare filter specification. This is a concatenation of +! pairs of null-terminated strings. The first string in each pair +! is the file type name, the second is a semicolon-separated list +! of file types for the given name. The list ends with a trailing +! null-terminated empty string. +! +character*(*) :: filter_spec +! Declare string variable to return the file specification. +! Initialize with an initial filespec, if any - null string +! otherwise +! +!character*512 :: file_spec = ""C +character*512 :: file_spec +integer status,ilen +ofn%lStructSize = SIZEOF(ofn) +ofn%hwndOwner = NULL ! For non-console applications, + ! set this to the Hwnd of the + ! Owner window. For QuickWin + ! and Standard Graphics projects, + ! use GETHWNDQQ(QWIN$FRAMEWINDOW) + ! +ofn%hInstance = NULL ! For Win32 applications, you + ! can set this to the appropriate + ! hInstance + ! +ofn%lpstrFilter = loc(filter_spec) +ofn%lpstrCustomFilter = NULL +ofn%nMaxCustFilter = 0 +ofn%nFilterIndex = 1 ! Specifies initial filter value +ofn%lpstrFile = loc(file_spec) +ofn%nMaxFile = sizeof(file_spec) +ofn%nMaxFileTitle = 0 +ofn%lpstrInitialDir = NULL ! Use Windows default directory +ofn%lpstrTitle = loc(""C) +ofn%Flags = OFN_PATHMUSTEXIST +ofn%lpstrDefExt = loc("txt"C) +ofn%lpfnHook = NULL +ofn%lpTemplateName = NULL + +! Call GetOpenFileName and check status +! +status = GetSaveFileName(ofn) +if (status .eq. 0) then + type *,'No file name specified' +else + ! Get length of file_spec by looking for trailing NUL + ilen = INDEX(file_spec,CHAR(0)) + +end if + +end Subroutine FileSave + + + +