Hello, The attached file is an example of how tangle wraps the Fortran module in
program main end program main which prevents the code from compiling. There are more instructions on how to reproduce the bug in the attached bug.org file. Paul Emacs : GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.37, cairo version 1.16.0) of 2023-03-16, modified by Debian Package: Org mode version 9.7-pre (release_9.6.7-581-gd38ca5 @ /home/ps/.emacs.d_Kubuntu-23.04/org-mode-git/lisp/) current state: ============== (setq org-link-elisp-confirm-function 'yes-or-no-p org-bibtex-headline-format-function 'org-bibtex-headline-format-default org-log-done 'time org-fontify-done-headline nil org-log-into-drawer t org-startup-folded t org-persist-after-read-hook '(org-element--cache-persist-after-read) org-format-latex-options '(:foreground "Yellow" :background default :scale 1.2 :html-foreground "Black" :html-background "Transparent" :html-scale 1.07 :matchers ("begin" "$1" "$" "$$" "\\(" "\\[")) org-export-before-parsing-hook '(org-attach-expand-links) org-cycle-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) org-archive-hook '(org-attach-archive-delete-maybe) org-file-apps '((auto-mode . emacs) ("\\.odt\\'" . "libreoffice %s") ("\\.docx\\'" . "libreoffice %s") ("\\.xlsx\\'" . "libreoffice %s") ("\\.png\\'" . "xv %s") ("\\.jpg\\'" . "xv %s") ("\\.jpeg\\'" . "xv %s") ("\\.webp\\'" . "xv %s") ("\\.pdf\\'" . "okular \"%s\"") ("\\.xoj" . "xournal %s") ("\\.xopp" . "xournalpp %s")) org-odt-format-inlinetask-function 'org-odt-format-inlinetask-default-function org-ascii-format-drawer-function #[771 " \207" [] 4 "\n\n(fn NAME CONTENTS WIDTH)"] org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-show-empty-lines org-cycle-optimize-window-after-visibility-change org-cycle-display-inline-images) org-persist-before-read-hook '(org-element--cache-persist-before-read) org-mode-hook '(#[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-fold-show-all append local] 5] #[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-babel-show-result-all append local] 5] org-babel-result-hide-spec org-babel-hide-all-hashes) org-babel-load-languages '((R . t) (emacs-lisp . t) (gnuplot . t) (octave . t) (python . t) (fortran . t) (sql . t) (ditaa . t) (dot . t) (shell . t)) org-latex-format-drawer-function #[514 "\207" [] 3 "\n\n(fn _ CONTENTS)"] org-latex-format-headline-function 'org-latex-format-headline-default-function org-confirm-shell-link-function 'yes-or-no-p org-adapt-indentation t org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"] outline-isearch-open-invisible-function 'outline-isearch-open-invisible org-highlight-latex-and-related '(latex) org-odt-format-headline-function 'org-odt-format-headline-default-function org-agenda-before-write-hook '(org-agenda-add-entry-text) org-babel-tangle-lang-exts '(("fortran" . "F90") ("python" . "py") ("emacs-lisp" . "el") ("elisp" . "el")) org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) org-confirm-elisp-link-function 'yes-or-no-p org-clock-out-remove-zero-time-clocks t org-hide-leading-stars t org-todo-keywords '((sequence "TODO(t!)" "MAYBE(m!)" "STARTED(s!)" "WAITING(w@/!)" "|" "DONE(d)" "INFO(i!)" "CANCELLED(c@)" "UNFINISHED(u@)" "ABANDONED(a@)") ) org-id-link-to-org-use-id t org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate) org-html-format-inlinetask-function 'org-html-format-inlinetask-default-function org-ascii-format-inlinetask-function 'org-ascii-format-inlinetask-default org-odt-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"] org-confirm-babel-evaluate nil org-fold-core-isearch-open-function 'org-fold--isearch-reveal org-clock-in-switch-to-state "STARTED" org-clock-persist 'history org-latex-format-inlinetask-function 'org-latex-format-inlinetask-default-function org-persist-before-write-hook '(org-element--cache-persist-before-write) org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) org-link-shell-confirm-function 'yes-or-no-p org-babel-pre-tangle-hook '(save-buffer) org-clock-display-default-range 'untilnow org-agenda-loop-over-headlines-in-active-region nil org-todo-keyword-faces '(("TODO" :foreground "light pink" :weight bold) ("MAYBE" :foreground "light pink" :weight bold) ("STARTED" :foreground "gold" :weight bold) ("DONE" :foreground "light green" :weight bold) ("WAITING" :foreground "gold" :weight bold) ("CANCELLED" :foreground "light green" :weight bold) ("UNFINISHED" :foreground "light green" :weight bold) ("ABANDONED" :foreground "light green" :weight bold)) org-occur-hook '(org-first-headline-recenter) org-export-with-drawers '("LATEX_DRAW") org-metadown-hook '(org-babel-pop-to-session-maybe) org-link-parameters '(("attachment" :follow org-attach-follow :complete org-attach-complete-link) ("eww" :follow org-eww-open :store org-eww-store-link) ("rmail" :follow org-rmail-open :store org-rmail-store-link) ("mhe" :follow org-mhe-open :store org-mhe-store-link) ("irc" :follow org-irc-visit :store org-irc-store-link :export org-irc-export) ("info" :follow org-info-open :export org-info-export :store org-info-store-link :insert-description org-info-description-as-command) ("gnus" :follow org-gnus-open :store org-gnus-store-link) ("docview" :follow org-docview-open :export org-docview-export :store org-docview-store-link) ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link) ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete org-bbdb-complete-link :store org-bbdb-store-link) ("w3m" :store org-w3m-store-link) ("doi" :follow org-link-doi-open :export org-link-doi-export) ("id" :follow org-id-open) ("file+sys") ("file+emacs") ("shell" :follow org-link--open-shell) ("news" :follow #[514 "\301\300\302 Q \"\207" ["news" browse-url ":"] 6 "\n\n(fn URL ARG)"] ) ("mailto" :follow #[514 "\301\300\302 Q \"\207" ["mailto" browse-url ":"] 6 "\n\n(fn URL ARG)"] ) ("https" :follow #[514 "\301\300\302 Q \"\207" ["https" browse-url ":"] 6 "\n\n(fn URL ARG)"] ) ("http" :follow #[514 "\301\300\302 Q \"\207" ["http" browse-url ":"] 6 "\n\n(fn URL ARG)"] ) ("ftp" :follow #[514 "\301\300\302 Q \"\207" ["ftp" browse-url ":"] 6 "\n\n(fn URL ARG)"] ) ("help" :follow org-link--open-help :store org-link--store-help) ("file" :complete org-link-complete-file) ("elisp" :follow org-link--open-elisp)) org-html-format-headline-function 'org-html-format-headline-default-function org-metaup-hook '(org-babel-load-in-session-maybe) org-clock-history-length 28 org-clock-into-drawer "CLOCK" )
Run with /usr/bin/emacs -Q -l init.el bug.org One should be able to click on the following link - elisp:org-babel-tangle to tangle (export) the code blocks in this org file. Then one should be able to execute the code block - [[code_block_to_execute]] by using C-c C-c in code block. However, it does not work because the tangle stage wraps the fortran module in program main end program main which prevents the code from compiling. #+BEGIN_SRC fortran :tangle circle.f90 MODULE Circle implicit None public :: area contains function area(r) implicit none real, intent(in) :: r real :: area area = 3.14159 * r**2 return end function area END MODULE Circle #+END_SRC #+BEGIN_SRC fortran :tangle main.f90 program main use circle, only: area implicit none integer :: i REAL, DIMENSION(5) :: R R = (/1.0, 2.0, 3.0, 4.0, 5.0 /) print *, "#+tblname: circle-area" do i = 1, 5 print *, "|", R(i), "|", area(R(i)), "|" end do end program main #+END_SRC #+BEGIN_SRC makefile :tangle makefile-main circle: @gfortran -c circle.f90 main: circle @gfortran -c main.f90 @gfortran circle.o main.o -o main clean: @rm -f *.o main #+END_SRC <<code_block_to_execute>> #+BEGIN_SRC sh :results raw replace make -f makefile-main clean main ./main #+END_SRC #+RESULTS: #+tblname: circle-area | 1.00000000 | 3.14159012 | | 2.00000000 | 12.5663605 | | 3.00000000 | 28.2743111 | | 4.00000000 | 50.2654419 | | 5.00000000 | 78.5397491 |
(org-babel-do-load-languages 'org-babel-load-languages '((fortran . t))) (setq org-confirm-babel-evaluate nil)