{"id":18854411,"url":"https://github.com/urbanjost/m_kracken95","last_synced_at":"2026-01-25T07:04:09.414Z","repository":{"id":117558090,"uuid":"279757448","full_name":"urbanjost/M_kracken95","owner":"urbanjost","description":"An almost Fortran-95 version of the command line parser procedure kracken(3f)","archived":false,"fork":false,"pushed_at":"2025-07-11T02:17:09.000Z","size":1464,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-11T05:52:50.699Z","etag":null,"topics":["argument","cli","command-line-parser","fortran","fortran-package-manager","parser"],"latest_commit_sha":null,"homepage":"","language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/urbanjost.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-07-15T03:53:01.000Z","updated_at":"2025-07-11T00:07:35.000Z","dependencies_parsed_at":"2023-09-24T12:11:09.808Z","dependency_job_id":null,"html_url":"https://github.com/urbanjost/M_kracken95","commit_stats":{"total_commits":22,"total_committers":1,"mean_commits":22.0,"dds":0.0,"last_synced_commit":"3bc071e6fec86b2784af76f9e37003b5ed8092d5"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/urbanjost/M_kracken95","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_kracken95","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_kracken95/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_kracken95/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_kracken95/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/urbanjost","download_url":"https://codeload.github.com/urbanjost/M_kracken95/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urbanjost%2FM_kracken95/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28747308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T05:12:38.112Z","status":"ssl_error","status_checked_at":"2026-01-25T05:04:50.338Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["argument","cli","command-line-parser","fortran","fortran-package-manager","parser"],"created_at":"2024-11-08T03:48:09.169Z","updated_at":"2026-01-25T07:04:09.397Z","avatar_url":"https://github.com/urbanjost.png","language":"Fortran","funding_links":[],"categories":[],"sub_categories":[],"readme":"# M_kracken95\n\n   A module that provides the Fortran 95 version of the kracken(3f)\n   procedure (and related routines) for command line parsing. See the\n   [kracken documentation](https://urbanjost.github.io/M_kracken95/krackenhelp.html) for a\n   full description.\n\n## Sample Usage\n\n   ```fortran\n       program krackentest\n       use M_kracken95, only : kracken, iget, lget, rget, sget\n       implicit none\n       ! define command and default argument values and read command line arguments\n         call kracken('cmd', ' -i 10 -r 10.0e3 -l .F. -f input')\n       ! retrieve values as specified types and use them\n         write(*,*)trim(sget('cmd_f')), iget('cmd_i'), lget('cmd_l'), rget('cmd_r')\n       end program krackentest\n   ```\n   This program can now be called like\n   ```bash\n       ./krackentest -r 200 -i 123 -l -f myfile.txt\n   ```\n\n## Download and Build\n   Just download the github repository, enter the src/ directory and run make:\n   \n   ```bash\n        git clone https://github.com/urbanjost/M_kracken95.git\n        cd M_kracken95/src\n        # change Makefile if not using one of the listed compilers\n     \n        # for gfortran\n        make clean\n        make F90=gfortran gfortran\n     \n        # for ifort\n        make clean\n        make F90=ifort ifort\n\n        # for nvfortran\n        make clean\n        make F90=nvfortran nvfortran\n   ```\n   \n   This will compile the M_kracken95 module and build all the example\n   programs.  Then you can run the examples:\n   \n         ../test/test1/kracken_test-1 -r 1234.56\n         ../test/test2/kracken_test-2 --help\n         ../test/test3/kracken_test-3 --par3 100 200 300\n   \n## Supports FPM ![fpm](docs/images/fpm_logo.gif)\n#### (registered at the [fpm(1) registry](https://github.com/fortran-lang/fpm-registry) )\n\n   Alternatively, download the github repository and build it with \n   fpm ( as described at [Fortran Package Manager](https://github.com/fortran-lang/fpm) )\n   \n   ```bash\n        git clone https://github.com/urbanjost/M_kracken95.git\n        cd M_kracken95\n        fpm build\n        fpm test\n   ```\n   \n   or just list it as a dependency in your fpm.toml project file.\n   \n```toml\n        [dependencies]\n        M_kracken95        = { git = \"https://github.com/urbanjost/M_kracken95.git\" }\n```\n\n## Which version of kracken(3f) is this?\n\n   There are multiple versions of the kracken(3f) routine dating back\n   to the late 1980s that conform to various Fortran standards. This is\n   the one that adheres to the Fortran 95 Standard except for the use of\n   the routines command_argument_count(3f) and get_command_argument(3f),\n   which are part of Fortran 2003 (Fortran 95 has no standard intrinsic\n   for reading command line arguments but the vast majority of compilers\n   have some routine for doing so as an extension).\n   \n   The main disadvantage of this version versus f2003+ versions is that\n   constant values are used to specify the maxiumum number of parameters and\n   the length of the parameters (if you know you have the f2003+ routines\n   for getting command arguments this can be easily changed so that you\n   scan the argument lengths in the first pass and then allocate them and\n   use them in the second pass).\n   \n   But since newer versions already exist that take advantage of Fortran\n   2003 this version is considered frozen. Since it is still requested it\n   will remain available as-is.\n\n## If you are having problems\n\n   The routine GET_COMMAND_ARGUMENTS() is the only one that uses non-f95\n   standard routines to read from the command line. If you do not have a\n   compiler that supports these f2003 procedures you may have to change that\n   procedure to make calls to the equivalent common extensions GETARGS()\n   and IARGC(). Note that as of this date it is very likely you can get\n   a GET_COMMAND_ARGUMENT() look-alike from the free F2KCLI package from\n   WINTERACTER if your compiler does not support it.\n   \n   You may note that the command parsing rules are not identical to Unix,\n   although very similar. This is intentional so that quotes are rarely\n   needed when entering commands and so negative values can be entered\n   without quoting. The main differences are there is no way to terminate\n   a keyword except by starting a new keyword; and the default keyword\n   -oo described later is implied after the verb; and you cannot combine\n   keywords (-ir is not equivalent to -i -r, which is sometimes allowed on\n   Unix commands). You may find the way to include a literal double-quote\n   character (\") as part of an input value is the most unlike Unix (*Hint*:\n   Double the double-quote. See code comments for details).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furbanjost%2Fm_kracken95","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Furbanjost%2Fm_kracken95","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furbanjost%2Fm_kracken95/lists"}